我在设置Selenium Grid时遇到了一个奇怪的问题。我的RemoteWebDriver工作一次,然后如果我尝试用它做任何其他事情,则抛出NoSuchWindowException。
例如,如果我运行以下测试(我只是为了探讨这个问题而写的):
@Test
public void testStuff() {
try{Thread.sleep(2000);}catch(Exception e){}
driver.get("http://www.google.com");
try{Thread.sleep(2000);}catch(Exception e){}
driver.get("http://www.stackoverflow.com");
System.out.println(driver.getTitle());
}
在我发送给它的虚拟机上弹出IE浏览器。然后该浏览器成功进入谷歌。但是,当我尝试用它做任何其他事情时(比如去另一个网站,或获取窗口的标题),我得到以下例外:
org.openqa.selenium.NoSuchWindowException: Unable to get browser(WARNING: The server did not provide any stacktrace information)
我尝试过各种各样的组合,每次都有相同的结果:我可以成功调用一次RemoteWebDriver的方法,但第二次抛出此异常。
有没有人有任何想法可能导致它?
我检查过的事情:
Hub和Node的控制台没有产生任何有用的线索。节点控制台包含:
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)
在回应理查德的评论时,WebDriver确实在测试结束时退出。我在控制台中打印出以下内容:
成功stst RemoteWebDriver:WINDOWS上的Internet Explorer(40b01604-9217-4f67-b809-61cd90d23c84) 准备退出RemoteWebDriver:WINDOWS上的Internet Explorer(40b01604-9217-4f67-b809-61cd90d23c84) 成功退出RemoteWebDriver:WINDOWS上的Internet Explorer(null)
此外,在VM上的任务管理器中,“IEDriverServer”进程在测试结束时消失。但奇怪的是,浏览器本身并没有关闭。我不知道是什么原因引起的,以及它是否相关。
答案 0 :(得分:1)
这听起来像IEDriverServer.exe
的典型问题,如果节点机器上的配置没有正确完成,就会发生。
请务必遵守Selenium Website中描述的所有要求。相应部分引用于此:
必需的配置
- 必须下载IEDriverServer exectuable并将其放入PATH。
- 在Windows Vista或Windows 7上的IE 7或更高版本中,必须将每个区域的保护模式设置设置为相同的值。只要每个区域的值相同,该值就可以打开或关闭。要设置保护模式设置,请选择" Internet选项..."从“工具”菜单中,单击“安全”选项卡。对于每个区域,选项卡底部都会显示一个复选框,标记为"启用保护模式"。
- 此外,"增强保护模式" IE 10及更高版本必须禁用。此选项位于“Internet选项”对话框的“高级”选项卡中。
- 浏览器缩放级别必须设置为100%,以便可以将本机鼠标事件设置为正确的坐标。
- 仅对于IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序可以维护与其创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的密钥是HKEY_LOCAL_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的值为0的DWORD值。
我有同样的问题,能够用这些提示来解决它。