0

我正在使用 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 中。

希望有人有这方面的经验!

4

1 回答 1

0

问题是 Selenium 2.0b1 中 InternetExplorerDriver 和 ChromeDriver 版本的限制。Selenium 2.0b2 版本包括一个改进的 InternetExplorerDriver,它支持切换到 IFrame 并针对其 DOM 运行 JavaScript。一个更强大的 ChromeDriver 还在后面。不幸的是,Beta 2 公告没有提及 ChromeDriver 的计划(或支持 Safari 的可能性)。

于 2011-02-19T16:34:14.150 回答