我正在使用Java
与为每个设备配置了不同端口和UUID的JUnit
服务器并行运行Appium
测试。我在两部手机上都运行相同的测试。看起来当测试在第一部手机上结束时,它会以某种方式干扰正在处理相同测试的另一部手机。这会导致错误消息和堆栈跟踪如下所示。
每次都不会发生。似乎大多数情况下问题都会发生,但有时它会在没有问题的情况下对两者进行测试。
driver.quit()/关闭()
作为测试的一部分,我们使用driver.quit()
在最后关闭驱动程序。这样做会导致上述行为。如果我删除 driver.quit()
,所有测试都将成功完成。这样做的问题是,如果我想运行其他测试,驱动程序会话仍在Appium
中打开,除非我重新启动Appium
,否则无法关闭它。
每个JUnit测试都在其Appium端口上运行并使用设备的UUID。
2个不同的错误:
1:
org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:Android引导套接字崩溃:错误:此套接字已被另一方结束(警告:服务器未提供任何堆栈跟踪信息)
2: org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:无法代理。代理错误:无法将命令代理到远程服务器。原始错误:错误:套接字挂起(警告:服务器未提供任何堆栈跟踪信息)
答案 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)