使用driver.quit()并行运行Appium测试会导致其他测试失败

时间:2016-07-27 22:57:29

标签: java android selenium junit appium

问题

我正在使用Java与为每个设备配置了不同端口和UUID的JUnit服务器并行运行Appium测试。我在两部手机上都运行相同的测试。看起来当测试在第一部手机上结束时,它会以某种方式干扰正在处理相同测试的另一部手机。这会导致错误消息和堆栈跟踪如下所示。

每次都不会发生。似乎大多数情况下问题都会发生,但有时它会在没有问题的情况下对两者进行测试。

driver.quit()/关闭() 作为测试的一部分,我们使用driver.quit()在最后关闭驱动程序。这样做会导致上述行为。如果我删除 driver.quit(),所有测试都将成功完成。这样做的问题是,如果我想运行其他测试,驱动程序会话仍在Appium中打开,除非我重新启动Appium,否则无法关闭它。

每个JUnit测试都在其Appium端口上运行并使用设备的UUID。

环境

  • 出现此问题的Appium版本(或git版本):Appium v​​1.5.3 / Appium Java Client 4.0.0 / Appium 3.4.1

详细

2个不同的错误: 1:
     org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:Android引导套接字崩溃:错误:此套接字已被另一方结束(警告:服务器未提供任何堆栈跟踪信息)

2:      org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:无法代理。代理错误:无法将命令代理到远程服务器。原始错误:错误:套接字挂起(警告:服务器未提供任何堆栈跟踪信息)

1 个答案:

答案 0 :(得分:2)

您还需要为每个Appium会话提供不同的--bootstrap-port( - bp)。 资料来源:http://appium.io/slate/en/master/?java#parallel-android-tests

此外,如果您的并行测试包括使用Selendroid自动化或Chrome / WebView自动化,则需要更多端口:

--chromedriver-port chromedriver端口(如果使用webview或chrome)

--selendroid-port selendroid端口(如果使用selendroid)