我正在尝试让Selenium WebDriver找到并使用在脚本执行之前已经打开的浏览器窗口。我正在用Java写作。
我使用的是selenium-server 2.37.0,浏览器是IE8。我也愿意使用Chrome浏览器。
无论如何,我尝试打开一个驱动程序实例,然后以通常的方式查找窗口句柄(Set handles = driver.getWindowHandles();)但这只找到驱动程序打开的窗口的hadle。我也只是试图切换到窗口找不到窗口。
我想使用预打开窗口的原因是因为当我执行我的脚本时,由于某种原因浏览器不会让它点击链接(这可能是因为链接是https地址并发送一个用户名和令牌)。当脚本完成后,网页也不会响应我手动点击链接。
我能够手动导航到链接并单击它链接工作正常,所以我的想法是我可以导航到我想要的页面,然后从那里踢脚本,但我需要webdriver使用我使用过的浏览器窗口。
我无法直接链接到Selenium链接,因为链接位于安全服务器后面。我必须先登录然后点击链接,这就是我遇到问题的地方。
答案 0 :(得分:0)
不幸的是,截至2。37。1(2013年12月),无法完成。
答案 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。