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

标签 java android selenium junit appium

问题

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

这并不是每次都会发生。似乎大多数时候都会出现问题,但有时会在两者上运行测试而不会出现问题。

driver.quit()/close() 作为测试的一部分,我们最后使用 driver.quit() 关闭驱动程序。 。这样做会导致上述行为。如果我删除 driver.quit()所有测试都将成功完成。这样做的问题是,如果我想运行其他测试,驱动程序 session 仍然在 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:处理命令时发生未知的服务器端错误。原始错误:无法代理。代理错误:无法将命令代理到远程服务器。原始错误:错误:套接字挂起(警告:服务器未提供任何堆栈跟踪信息)

最佳答案

您还需要为每个 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/

相关文章:

java - Apache Flink 错误 java.lang.ClassNotFoundException

java - Spring @RequestBody 映射 POJO 时导致 HTTP 405 Method Not allowed

javascript - 如何在 Selenium Python 中处理模态框或弹出框

java - 获取错误 : org. openqa.selenium.WebDriverException:未知错误:键应该是一个字符串

android - 将文本设置为居中适用于一个微调器,但不适用于其他微调器

python - 如何使 Selenium WebDriver 不等待整个页面加载

java - 在框架上绘制自己的缓冲图像

java - 图java的深度优先搜索

java - 无法在 Android 10 中创建目录

android - 谷歌地图播放服务库添加报错