私はSelenium2b1を使用していて、Firefox(MacOSとWindowsの両方)を駆動して良い結果を得ています。IEとChromeに対して同じテストを実行したいと思います。ChromeDriverのいくつかの回避策を追加した後、スクリプトが'return "Hello!"'であっても、driver.switchTo()。frame(canvasName)の後にChromeDriverとInternetExplorerDriverの両方がexecuteScript()で失敗することがわかりました。ChromeDriverは「ページ上になかったため、javascriptを実行できませんでした」と報告しますが、InternetExplorerDriverは「JavaScriptエラー」を報告します。
Groovyのコードは次のとおりです。
selenium.switchTo().frame(canvasName)
log.info("Canvas open. Waiting for Game to load.");
waitFor(selenium, 30) {
selenium.findElement(By.id("Game")).click()
}
waitFor(selenium, 30) {
def eval = null
try {
eval = selenium.executeScript("return document.URL")
log.fine("executeScript returns [$eval]")
} catch(Exception e) {
log.fine("Exception from executeScript: $e.message")
}
return eval
}
変数seleniumには、RemoteWebDriverのインスタンスがあります。waitForメソッドは、WebDriverWaitのインスタンスを作成し、クロージャーパラメーターをuntilパラメーターとして参照するラッパーインスタンスを渡します。IDが「Game」の要素は、上記のコードの最初のステートメントで選択されたIFrameにのみ存在することに注意してください。
誰かがこれを経験したことを願っています!