如何使appiumtesting在iOS上运行得更快?
目前,我正在使用appium进行iOS应用程序testing,并在Mac mini机器上使用Java编写了testing。 我正在使用Jenkins CI来运行我的testing。 我想以更快的速度运行我的testing,因为它在iOS模拟器上相当慢。 例如,如果我通过sendkeys()函数在textfield中input任何值(如'testdata'),则在模拟器中input速度很慢。 它首先从模拟器的键盘写字符't'然后'e'然后's'等。
以下是我的问题,
- 有什么方法可以在模拟器上更快地执行我的testing,特别是通过sendkeys()函数进入文本框时?
- 有什么办法可以在没有模拟器的情况下运行我的testing吗?
不要在iOS上使用发送键
你实际上不应该在iOS上使用sendKeys
,因为它速度很慢,而且很脆弱。
你应该使用Java库的setValue
和type
的ruby库
设置值使用情况
setValue
在Java库中定义。
它意味着在WebElement上被调用。
driver.find_element(By.locator(value)).setValue("foo")
使用iOS模拟器是运行testing的最佳select
仪器需要现场模拟器或真实设备*来与您的应用程序进行交互。 有一些最佳实践可以改进你的testing代码,这可能会使testing更快。
其他优化的最佳实践
- 不要使用“睡眠”来尝试和等待一个元素 – 而是不断轮询驱动程序,如果该元素显示和可点击。
- 使用
setValue
而不是sendKeys - 停止使用Xpath定位器策略。 这是在iOS上的平板和缓慢。 使用UIAutomation或AccessibilityId定位器策略。
- 只有在需要与他们互动时才能获得元素
*build议不要使用Real设备(当性能很重要时)
自动化一个真实的设备在每个动作之间有一秒内置的延迟。
无论Appium服务器有多快,或者您的testing脚本如何,Appium将“执行”命令推送到仪器工作队列以及在设备上执行时,都会有一段延迟。
我在哪里可以find关于这个build议的更多信息(我使用的是ruby而不是java),而且xpath很多,我猜可能是脚本执行时间过长的原因之一。
“停止使用Xpath定位器策略,在iOS上使用UIAutomation或AccessibilityId定位策略。
您可以将sendKeyStrategy的iOSfunction设置为setValue,而不是默认的OneByOne。