问题
我正在使用Java
运行JUnit
测试与 Appium
并行为每个设备配置不同端口和 UUID 的服务器。我在两部手机上运行相同的测试。看起来当测试在第一部手机上结束时,它会以某种方式干扰仍在处理相同测试的另一部手机。这会产生如下所示的错误消息和堆栈跟踪。
这并不是每次都会发生。似乎大多数时候都会出现问题,但有时会在两者上运行测试而不会出现问题。
driver.quit()/close()
作为测试的一部分,我们最后使用 driver.quit()
关闭驱动程序。 。这样做会导致上述行为。如果我删除 driver.quit()
所有测试都将成功完成。这样做的问题是,如果我想运行其他测试,驱动程序 session 仍然在 Appium
中打开。除非我重新启动,否则无法关闭它 Appium
.
每个 JUnit 测试都在其 Appium 端口上运行,并使用设备的 UUID。
环境
- 出现问题的 Appium 版本(或 git 修订版):Appium v1.5.3/Appium Java Client 4.0.0/Appium 3.4.1
详细信息
2 个不同的错误:
1:
org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:Android引导套接字崩溃:错误:此套接字已被对方结束(警告:服务器未提供任何堆栈跟踪信息)
2: org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:无法代理。代理错误:无法将命令代理到远程服务器。原始错误:错误:套接字挂起(警告:服务器未提供任何堆栈跟踪信息)
最佳答案
您还需要为每个 Appium session 提供不同的 --bootstrap-port
(-bp)。
来源:http://appium.io/slate/en/master/?java#parallel-android-tests
编辑:并行测试的文档现在可以在 http://appium.io/docs/en/advanced-concepts/parallel-tests/ 找到。
此外,如果您的并行测试包括使用 Selendroid 自动化或 Chrome/WebView 自动化,则需要更多端口:
--chromedriver-port
chromedriver 端口(如果使用 webviews 或 chrome)
--selendroid-port
selendroid 端口(如果使用 selendroid)
关于java - 使用 driver.quit() 并行运行 Appium 测试时会导致其他测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624525/