2

私は初心者ですが、他の自動テスト ツールを使用したことがありますRailsSelenium

Selenium 2 IDE から Rails/RSpec にスクリプトをエクスポートし、実行できるようにコードを変更しています。スクリプトは特定のリンクを見つけることができません。

作業中の IDE スクリプトからエクスポートされた元の Ruby コードは次のとおりです。

@driver.find_element(:link, "skip").click

これは失敗したので、XPath ステートメントで要素を識別しようとしました。(XPath を使用して修正した最初にエクスポートされたコードに失敗した他の要素があったため、この戦略を使用しているのはそのためです。)

Ruby コード内のリンクを識別するために、次のようなさまざまな方法を試しました。

試み #1:@driver.find_element(:XPath, "//*[@class='skip-link']").click

試み #2:@driver.find_element(:XPath, "//*[@value='skip']").click

すべての場合の結果:Unable to locate element: {"method":"link text","selector":"skip"}

Firebug ごとに報告された HTML:

<a style="float: right; margin-right: 10px; text-decoration: none;" href="/yourfuture" class="skip-link"> skip </a> 

Firebug ごとに報告された XPath:

/html/body/div[2]/div[2]/div/div/div[3]/div[4]/a

タイムアウトを 60 秒に設定しており、スクリプトが失敗する前にリンクスキップが数秒間表示されるので、これは問題ではありません。

関連する可能性がある 1 つの事実: アプリがウィンドウにすべてのコントロールを表示するとき、スキップは最初は表示されません。プログラムの設計により、アプリは約 5 秒前に待機します。

私は何を間違っていますか?前もって感謝します。

4

1 に答える 1

0

表示されなかったリンクが iFrame にあることがわかりました。iframe の属性が変更されたため、静的プロパティで識別するのが難しくなったため、Webdriver が「認識」できなかった行の直前に次のコード行を挿入しました。

@driver.switch_to.frame(0) 

@driver.switch_to.frame("iframe-identifier-per-swtich")iframe を特定する信頼できる方法があれば、それも使用できたはずです。

ええ、あなたはおそらくそれを知っていましたが、これは別の初心者が同じ問題を回避するのに役立つかもしれません.

于 2012-12-12T19:58:21.230 に答える