当前位置: 首页 > 面试题库 >

在Grid上运行时如何关闭ChromeDriver?

安经纶
2023-03-14
问题内容

我目前正在通过TestNG套件在带有Selenium Grid
2的RemoteWebDriver上运行测试。这在Firefox和IE上工作正常。现在,我添加了Chrome,并且测试运行正常,但在对套件进行所有测试之后调用driver.quit()时,总是收到Exception(对FF和IE正常工作)。

异常如下所示:

Error communicating with the remote browser. It may have died.
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:476)
at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:346)
at setups.StandardChromeSetup.tearDown(StandardChromeSetup.java:42)
19 lines not shown

Caused by Error communicating with the remote browser. It may have died. 
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:467)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:476)
at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:346)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
at $Proxy1.quit(Unknown Source)
at  org.openqa.selenium.support.events.EventFiringWebDriver.quit(EventFiringWebDriver.java:194)
at org.openqa.selenium.remote.server.handler.DeleteSession.call(DeleteSession.java:42)
at org.openqa.selenium.remote.server.handler.DeleteSession.call(DeleteSession.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:150)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

我正在使用Selenium版本2.24.1和chromedriver.exe 21.0.1180.4

编辑

拆卸代码:

@AfterSuite
public void tearDown(){
  driver.quit();
}

带有FF和IE的RemoteDriver均可完美运行。但不是铬。


问题答案:

面临同样的问题。这是我解决的方法。新版Chrome驱动程序似乎是一个错误。使用以前版本的驱动程序(20.0.1133.0)为我解决了此问题。

检查驱动程序下载页面。



 类似资料:
  • 问题内容: 我有一个 包含特定日期和时间 的 文本文件。 我希望能够 在该文件中指定的时间运行脚本。 您将如何实现?创建另一个在后台运行的脚本(有点像守护进程),并每秒检查当前时间是否与文件中的时间匹配?还有另一种方法吗?该机是 linux服务器,Debian wheezy。提前致谢 问题答案: 请看以下内容: 该代码行在特定时间执行“ ls -l”。这是在特定时间执行某些操作(在我的示例中为命令

  • 主机系统为ARCHLinux。我想开发需要运行Windows docker容器的.NET4.6.1应用程序。所以我在VirtualBox下运行Win10。然后我在Win10中安装Docker,以运行Windows Docker容器。Linux->VirtualBox->Win10->Docker->Windows Docker容器->要运行的应用程序。 或者更具体地说,VirtualBox是否支持

  • 问题内容: 我正在研究Java RMI。我在端口2028上运行rmiregistry几乎没有问题,因为我已经使用它运行了我的测试程序。我可以使用其他端口运行程序,但我想知道,如何关闭在特定端口上运行的rmiregistry? 问题答案: 如果您想在编程中做到这一点,我们可以做以下事情: 这是我们的JMXServer类的完整代码。我们在创建其中两个并完全注销它们时遇到了问题,因此我们确保在不同的端口

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 去年关闭。 我目前在开放源代码电子商务平台(www.oscmax.com)上工作,我正在尝试确定是否可以部署可以在平板电脑上运行的脱机版本。我原本希望使用iPad,但是事实证明这非常困难(不可能吗?) a)是否有人知道将在平板电脑上运行的AMP(Apach

  • 问题内容: 我想关闭弹出窗口(已知的窗口名称),然后返回到原始窗口。我该怎么办?如果我无法获得窗口中关闭按钮的常量。那么有没有达到目标的一般行为? 问题答案: 你有没有尝试过:

  • 我有一个异步任务执行器。如何让Spring在所有任务完成之前等待应用程序关闭?