使用预先打开的窗口与Selenium

时间:2013-12-27 18:08:14

标签: java selenium

我正在尝试让Selenium WebDriver找到并使用在脚本执行之前已经打开的浏览器窗口。我正在用Java写作。

我使用的是selenium-server 2.37.0,浏览器是IE8。我也愿意使用Chrome浏览器。

无论如何,我尝试打开一个驱动程序实例,然后以通常的方式查找窗口句柄(Set handles = driver.getWindowHandles();)但这只找到驱动程序打开的窗口的hadle。我也只是试图切换到窗口找不到窗口。

我想使用预打开窗口的原因是因为当我执行我的脚本时,由于某种原因浏览器不会让它点击链接(这可能是因为链接是https地址并发送一个用户名和令牌)。当脚本完成后,网页也不会响应我手动点击链接。

我能够手动导航到链接并单击它链接工作正常,所以我的想法是我可以导航到我想要的页面,然后从那里踢脚本,但我需要webdriver使用我使用过的浏览器窗口。

我无法直接链接到Selenium链接,因为链接位于安全服务器后面。我必须先登录然后点击链接,这就是我遇到问题的地方。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以通过windowHandle识别浏览器窗口,并在测试时在多个Windows之间切换。

您可以打印出所有现有的windowHandles(在您的情况下可能是一个),然后访问它。

此解决方案适用于我(使用Selenium 3.4.0):

Object[] handles = driver.getWindowHandles().toArray();
String windowHandle = handles[0]+"";
driver.switchTo().window(windowHandle);

切换到浏览器窗口后,您应该可以继续测试。

它依赖于您的webdriver的正确性 - 如果您打开了Edge窗口,您使用的驱动程序应该是EdgeDriver。