如何使appiumtesting在iOS上运行得更快?

目前,我正在使用appium进行iOS应用程序testing,并在Mac mini机器上使用Java编写了testing。 我正在使用Jenkins CI来运行我的testing。 我想以更快的速度运行我的testing,因为它在iOS模拟器上相当慢。 例如,如果我通过sendkeys()函数在textfield中input任何值(如'testdata'),则在模拟器中input速度很慢。 它首先从模拟器的键盘写字符't'然后'e'然后's'等。

以下是我的问题,

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

不要在iOS上使用发送键

你实际上不应该在iOS上使用sendKeys ,因为它速度很慢,而且很脆弱。

你应该使用Java库的setValuetype的ruby库

设置值使用情况

setValue在Java库中定义。

它意味着在WebElement上被调用。

 driver.find_element(By.locator(value)).setValue("foo") 

使用iOS模拟器是运行testing的最佳select

仪器需要现场模拟器或真实设备*来与您的应用程序进行交互。 有一些最佳实践可以改进你的testing代码,这可能会使testing更快。

其他优化的最佳实践

  1. 不要使用“睡眠”来尝试和等待一个元素 – 而是不断轮询驱动程序,如果该元素显示和可点击。
  2. 使用setValue而不是sendKeys
  3. 停止使用Xpath定位器策略。 这是在iOS上的平板和缓慢。 使用UIAutomation或AccessibilityId定位器策略。
  4. 只有在需要与他们互动时才能获得元素

*build议不要使用Real设备(当性能很重要时)

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

无论Appium服务器有多快,或者您的testing脚本如何,Appium将“执行”命令推送到仪器工作队列以及在设备上执行时,都会有一段延迟。

我在哪里可以find关于这个build议的更多信息(我使用的是ruby而不是java),而且xpath很多,我猜可能是脚本执行时间过长的原因之一。

“停止使用Xpath定位器策略,在iOS上使用UIAutomation或AccessibilityId定位策略。

您可以将sendKeyStrategy的iOSfunction设置为setValue,而不是默认的OneByOne。