web-dev-qa-db-ja.com

Seleniumを使用してフレーム内でJavaScriptを実行するにはどうすればよいですか?

フレームのあるページ(index.html)があります:

<html>
<body>
<iframe src="otherPage.html" />
</body>
</html>

そして、otherPage.htmlには次の内容が含まれています。

<html>
<head><link src="jquery-min.js" type="text/javascript" /></head>
<body><div id="main">Contents</div></body>
</html>

Index.htmlで次のSeleniumコードを使用しようとしています。

Selenium.open("index.html");
Selenium.selectFrame("//iframe");
Selenium.getEval("window.jQuery('div[id=main]')");

しかし、これは惨めに失敗します。 jQueryオブジェクトが存在しないことを示しています。

次のようにotherPageでSeleniumテストを実行しようとすると:

Selenium.open("otherPage.html");
Selenium.getEval("window.jQuery('div[id=main]')");

すべてがハンキーなドーリーです。

今のところ、これは擬似コードです。人々が私にそれをコンパイルさせて欲しいのなら、私はそれをしてgithubに置きます。

12
Zee Spencer

Seleniumは、ウィンドウオブジェクトを独自のオブジェクト内に格納するため、ウィンドウオブジェクトをより適切に操作できます。フレームに移動すると、次のようになります。

Selenium.getEval("var window = this.browserbot.getUserWindow();window.jQuery('div[id=main]')");

そしてそれはあなたのために働くはずです

私はこのタイプの状況のた​​めに私のサイトにチュートリアルを持っています ここ

12
AutomatedTester

あなたが使用することができます:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("javascript:sendEvent('play');");
11
Innovation