我正在使用 Selenium 2b1 并在驱动 Firefox(MacOS 和 Windows)时取得了良好的效果。我们想对 IE 和 Chrome 运行相同的测试。在为 ChromeDriver 添加了几个解决方法后,我发现 ChromeDriver 和 InternetExplorerDriver 在 executeScript() 中都失败了,即使在 driver.switchTo().frame(canvasName) 之后脚本是“返回“Hello!””。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 中。
希望有人有这方面的经验!