Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用带有Selenium的预打开窗口_Java_Selenium - Fatal编程技术网

Java 使用带有Selenium的预打开窗口

Java 使用带有Selenium的预打开窗口,java,selenium,Java,Selenium,我试图让SeleniumWebDriver查找并使用在脚本执行之前已经打开的浏览器窗口。我正在用Java写东西 我使用的是SeleniumServer2.37.0,浏览器是IE8。我也愿意使用Chrome浏览器 无论如何,我尝试过打开一个驱动程序实例,然后以通常的方式(Set handles=driver.getWindowHandles();)查找窗口句柄,但这只找到驱动程序打开的窗口的阴影。我刚才也试着切换到找不到的窗口旁边的窗口 我希望使用预打开的窗口的原因是,当我执行脚本时,出于某种原因

我试图让SeleniumWebDriver查找并使用在脚本执行之前已经打开的浏览器窗口。我正在用Java写东西

我使用的是SeleniumServer2.37.0,浏览器是IE8。我也愿意使用Chrome浏览器

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

我希望使用预打开的窗口的原因是,当我执行脚本时,出于某种原因,浏览器不允许它单击链接(可能是因为链接指向https地址并发送用户名和令牌)。脚本完成后,网页也不会响应我手动单击链接

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


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

不幸的是,从2.37.1(2013年12月)起,这无法完成


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

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

此解决方案对我有效(使用Selenium 3.4.0):

切换到浏览器窗口后,您应该能够继续测试


这取决于webdriver的正确性——如果打开边缘窗口,则使用的驱动程序应该是EdgeDriver

感谢您的快速回复和链接。
Object[] handles = driver.getWindowHandles().toArray();
String windowHandle = handles[0]+"";
driver.switchTo().window(windowHandle);