Selenium RemoteWebDriver工作一次,然后抛出NoSuchWindowException

Selenium RemoteWebDriver工作一次,然后抛出NoSuchWindowException,selenium,selenium-webdriver,selenium-grid,Selenium,Selenium Webdriver,Selenium Grid,我在设置Selenium网格时遇到了一个奇怪的问题。我的RemoteWebDriver只工作一次,如果我尝试对其执行任何其他操作,则会抛出NoSuchWindowException 例如,如果我运行以下测试(我编写此测试只是为了探索此问题): IE浏览器会在我要发送到的虚拟机上弹出。该浏览器随后成功进入谷歌。但是,当我尝试使用它做任何其他事情时(如访问其他网站或获取窗口标题),我会遇到以下例外情况: org.openqa.selenium.NoSuchWindowException: Unabl

我在设置Selenium网格时遇到了一个奇怪的问题。我的RemoteWebDriver只工作一次,如果我尝试对其执行任何其他操作,则会抛出NoSuchWindowException

例如,如果我运行以下测试(我编写此测试只是为了探索此问题):

IE浏览器会在我要发送到的虚拟机上弹出。该浏览器随后成功进入谷歌。但是,当我尝试使用它做任何其他事情时(如访问其他网站或获取窗口标题),我会遇到以下例外情况:

org.openqa.selenium.NoSuchWindowException: Unable to get browser(WARNING: The server did not provide any stacktrace information)
我尝试了各种组合,每次都有相同的结果:我可以成功地从RemoteWebDriver调用一个方法一次,但第二次它抛出这个异常

有人知道是什么引起的吗

我检查过的东西:

  • IEDriverServer和VM都是64位的

  • 中心和节点的控制台都没有提供有用的线索。节点控制台包含:

    INFO - Executing: [get: http://www.google.com] at URL: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url) INFO - Done: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url INFO - Executing: [get: http://www.stackoverflow.com] at URL: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url) INFO - Done: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url WARN - Exception thrown org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information) 信息-执行:[获取:http://www.google.com]URL:/session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/URL) 信息-完成:/session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url 信息-执行:[获取:http://www.stackoverflow.com]URL:/session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/URL) 信息-完成:/session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url 警告-引发异常 org.openqa.selenium.NoSuchWindowException:无法获取浏览器(警告:服务器未提供任何堆栈跟踪信息)
  • 作为对Richard评论的回应,WebDriver真的在测试结束时退出了。我正在控制台中打印以下内容:

    已成功在WINDOWS上安装远程Web驱动程序:internet explorer(40b01604-9217-4f67-b809-61cd90d23c84) 准备退出WINDOWS上的RemoteWebDriver:internet explorer(40b01604-9217-4f67-b809-61cd90d23c84) 已成功退出WINDOWS上的RemoteWebDriver:internet explorer(空)

  • 此外,在VM上的任务管理器中,“IEDriverServer”进程在测试结束时消失。但奇怪的是,浏览器本身并没有关闭。我不知道是什么原因造成的,也不知道是否有关联


    • 在我看来,这是IEDriverServer.exe的典型问题,如果节点计算机上的配置没有正确完成,就会发生

      舒尔应遵守上所述的所有要求。此处引用的相应部分:

      所需配置

      • IEDriverServer可执行文件必须下载并放置在您的路径中
      • 在Windows Vista或Windows 7上的IE 7或更高版本上,必须将每个区域的保护模式设置设置为相同的值。该值可以打开或关闭,只要每个分区的值相同。要设置受保护模式设置,请从“工具”菜单中选择“Internet选项…”,然后单击“安全”选项卡。对于每个区域,标签底部将有一个复选框,标记为“启用保护模式”
      • 此外,IE 10及更高版本必须禁用“增强保护模式”。此选项位于“Internet选项”对话框的“高级”选项卡中
      • 浏览器缩放级别必须设置为100%,以便将本机鼠标事件设置为正确的坐标
      • 仅对于IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序能够保持与它创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的项是HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE\BFCACHE。对于64位Windows安装,密钥为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE子项可能存在,也可能不存在,如果不存在,则应创建该子项重要信息:在此键内,创建一个名为iexplore.exe的DWORD值,值为0

      我也遇到了同样的问题,并通过这些提示得以解决。

      如何初始化驱动程序?在测试结束时,您如何退出驱动程序?还有一些其他的评论。我对64位版本的IEDriverServer有问题,建议尝试32位版本。另一个原因是,如果您有一个IE实例处于打开状态,IEDriverServer不喜欢它。如果您没有正确退出IEDriverServer的第一个实例,并且没有打开一个IE窗口,这可能是您出现问题的原因。@Richard好的,这真的很奇怪。我的代码正在退出驱动程序。我甚至设置了一些System.out.println()来确认这一点。但在虚拟机中,浏览器不会关闭!我在VM中打开了任务管理器来观察进程,我看到在调用driver.quit()之后,IEDriverServer从进程列表中删除了,但是ie浏览器没有关闭!另外,在我手动关闭它并再次运行测试之后,它仍然以同样的方式失败。我有完全相同的问题! INFO - Executing: [get: http://www.google.com] at URL: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url) INFO - Done: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url INFO - Executing: [get: http://www.stackoverflow.com] at URL: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url) INFO - Done: /session/de0a7b62-33a1-4330-b9a9-25b99f5504-cf/url WARN - Exception thrown org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information)