Selenium驱动程序 - windowhandle搞砸了

时间:2016-09-29 05:21:05

标签: java selenium firefox

我在Firefox版本48.x.x上使用Selenium WebDriver。为此,我需要使用GeckoDriver / Marionette驱动程序与Firefox驱动程序通信。在旧版本的Firefox中,Selenium驱动程序能够使用mysql -uUSER -pPASS DB -N < /path/to/file/batch.sql | while read user_email display_name value type ; do emailtemplate="/path/to/file/email.html" ( echo "From: email@address.com" echo "To: $user_email" echo "MIME-Version: 1.0" echo "Subject: Test" echo "Content-Type: text/html" cat $emailtemplate ) | /usr/sbin/sendmail -t sleep 5 done 获取浏览器窗口的会话ID,但是在新的(?)Gecko / Marionette驱动程序中,此函数返回一个短整数,而不是长文本字符串十六进制。这是一个错误吗?还是Gecko / Marionette驱动程序的新功能?

这是我遇到麻烦的地方:

1 - 我使用Gecko / Marionette驱动程序启动Firefox浏览器

driver.getWindowHandle()

工作正常。然后我打印出浏览器窗口会话ID的值:

final File file = new File("/Applications/geckodriver");
System.setProperty("webdriver.gecko.driver", file.getAbsolutePath());
driver = new FirefoxDriver(); 

它显示了一些介于10到20之间的短整数,这是不正确的。

然后我打印出浏览器会话,我能够看到实际的会话ID(()之间的MAC字段:

System.out.println("WindowHandle ID = " + driver.getWindowHandle());

现在我认为新的Gecko / Marionette搞砸了Brwowser Session = BrowserSession [driver=FirefoxDriver: Firefox on MAC (**bc4eb9db-608b-5643-8ec9-136b6c54f6a2**), user=Admin, lastPage=null] 功能?由于这个show-stopper,我无法将Selenium控件从一个窗口切换到另一个窗口或弹出窗口。

问题

无论如何我能获得实际的浏览器窗口会话ID吗?请帮忙。我真的需要克服这个巨大的障碍。我一直在寻找解决方案但没找到。

我用Java写作。

非常感谢大家。

1 个答案:

答案 0 :(得分:0)

使用Selenium 2.53.1 + Firefox(第48版)及以下代码

System.setProperty("webdriver.firefox.marionette", file.getAbsolutePath());

System.setProperty("webdriver.gecko.driver", file.getAbsolutePath());