我在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写作。
非常感谢大家。
答案 0 :(得分:0)
使用Selenium 2.53.1 + Firefox(第48版)及以下代码
System.setProperty("webdriver.firefox.marionette", file.getAbsolutePath());
或
System.setProperty("webdriver.gecko.driver", file.getAbsolutePath());