【发布时间】:2016-09-29 05:21:04
【问题描述】:
我在 Firefox 版本 48.x.x 上使用 Selenium WebDriver。为此,我需要使用 GeckoDriver/Marionette 驱动程序来与 Firefox 驱动程序通信。在旧版本的 Firefox 中,Selenium 驱动程序能够使用 driver.getWindowHandle() 获取浏览器窗口的会话 ID,但是在新的(?) Gecko/Marionette 驱动程序中,此函数返回一个短整数,而不是十六进制的长文本字符串.这是一个错误吗?还是壁虎/木偶驱动的新功能?
这是我遇到麻烦的地方:
1 - 我使用 Gecko/Marionette 驱动程序启动 Firefox 浏览器
final File file = new File("/Applications/geckodriver");
System.setProperty("webdriver.gecko.driver", file.getAbsolutePath());
driver = new FirefoxDriver();
它工作正常。然后我打印出浏览器窗口会话ID的值:
System.out.println("WindowHandle ID = " + driver.getWindowHandle());
它显示了一些不正确的 10 到 20 之间的短整数。
然后我打印出浏览器会话,我可以看到实际的会话 ID( () 之间的 MAC 字段):
Brwowser Session = BrowserSession [driver=FirefoxDriver: Firefox on MAC (**bc4eb9db-608b-5643-8ec9-136b6c54f6a2**), user=Admin, lastPage=null]
现在我认为新的 Gecko/Marionette 搞砸了 driver.getWindowHandle() 功能?由于这个显示停止器,我无法将 Selenium 控件从一个窗口切换到另一个窗口或弹出窗口。
问题:
无论如何我可以获得实际的浏览器窗口会话 ID 吗?请帮忙。我真的需要克服这个巨大的障碍。我一直在寻找解决方案,但没有找到。
我正在用 Java 编写代码。
非常感谢大家。
【问题讨论】:
-
你能提到使用的 Selenium 版本吗?
-
@Chandra... Selenium v 3.0 beta; Firefox v 48。它仅适用于窗口。我尝试为我的 Mac 设置相同的设置,但没有成功。