我正在运行2000多个硒测试,这些测试使用selenium-leg-rc.jar(一种桥库)从Selenium RC迁移到WebDriver,它允许使用WebDriver编译/执行基于RC的测试代码。
这些测试通过分成4组在4个并行过程中执行。大约50%的测试运行良好,此后,我发现在每次测试结束时调用driver.quit()时,firefox和gecodriver进程无法持续杀死。此后,我随机得到SocketTimeoutException / OutOfMemoryError错误,如下调用堆栈。
[junit] Exception in thread "ForkJoinPool.commonPool-worker-0" java.lang.OutOfMemoryError: unable to create new native thread
[junit] at java.lang.Thread.start0(Native Method)
[junit] at java.lang.Thread.start(Thread.java:714)
[junit] at java.util.concurrent.ForkJoinPool.tryAddWorker(ForkJoinPool.java:1338)
[junit] at java.util.concurrent.ForkJoinPool.deregisterWorker(ForkJoinPool.java:1460)
[junit] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:167)
. . .
. . .
. . .
[junit] org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: timeout
[junit] Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
[junit] System info: host: 'mylinuxbox', ip: '101.24.15.172', os.name: 'Linux', os.arch: 'amd64', os.version: '3.8.13-118.36.1.el6uek.x86_64', java.version: '1.8.0_20-ea'
[junit] Driver info: driver.version: RemoteWebDriver
[junit] at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
如果我在单个过程中运行这些测试,则一切正常。除了使用Runner类运行多个线程(而不是进程)或执行干净的WebDriver方法之外,其他任何建议。 Windows 10也有类似问题。
硒3.141.59壁虎0.25Firefox 60.8.0b8