如何在iOS上更快地运行appium测试?

Osa*_*maA 4 java ios jenkins appium

目前,我正在使用appium进行iOS应用程序测试,我在mac mini机器上用Java编写了测试.我正在使用Jenkins CI来运行我的测试.我想更快地运行我的测试,因为目前它在iOS模拟器上非常慢.例如,如果我通过sendkeys()函数在textfield中输入任何值,如'testdata'那么在模拟器中输入速度很慢.它先从模拟器的键盘上写下't'然后'e'然后's'等等.

以下是我的问题,

  1. 有没有办法在模拟器上更快地执行我的测试,特别是在通过sendkeys()函数进入文本字段时?
  2. 有没有什么方法可以在没有模拟器的情况下以无头方式运行我的测试?

Jes*_*ess 9

不要在iOS上使用发送密钥

你实际上不应该sendKeys在iOS 上使用,因为它很慢而且很有趣.

你应该使用setValueJava lib和typeruby lib

设置值使用情况

setValue这里的 Java库中定义.

它应该在WebElement上调用.

driver.find_element(By.locator(value)).setValue("foo")
Run Code Online (Sandbox Code Playgroud)

使用iOS模拟器是运行测试的最佳选择

仪器与您的应用程序交互需要实时模拟器或真实设备*.您可以遵循一些最佳实践来改进测试代码,这可能会使测试更快.

其他优化的最佳实践

  1. 不要使用"sleeps"来尝试等待元素 - 而是不断轮询驱动程序以查看元素是否显示和可点击.
  2. 使用setValue而不是sendKeys
  3. 停止使用Xpath定位器策略.在iOS上它很有趣而且很慢.使用UIAutomation或AccessibilityId定位器策略.
  4. 只有在需要与元素交互时才能获取元素

*不建议使用Real Devices for iOS(当性能很重要时)

自动化真实设备在每个动作之间具有一秒的内置延迟.

无论Appium服务器有多快,或者您的测试脚本是多少,Appium将"执行"命令推送到仪器工作队列和在设备上执行时都会有延迟.