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

时间:2014-09-18 14:51:13

标签: java ios jenkins appium

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

以下是我的问题,

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

3 个答案:

答案 0 :(得分:8)

不要在iOS上使用发送密钥

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

您应该将setValue用于Java lib,将type用于ruby lib

设置值使用

setValue在Java库here中定义。

它应该在WebElement上调用。

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

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

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

优化的其他最佳做法

  1. 不要使用"睡觉"尝试等待一个元素 - 而不断轮询驱动程序是否显示元素并可点击。
  2. 使用setValue代替sendKeys
  3. 停止使用Xpath定位器策略。在iOS上它很有趣而且很慢。使用UIAutomation或AccessibilityId定位器策略。
  4. 只有在需要与他们互动时才能获取元素
  5. *建议不要使用Real Devices for iOS(当性能很重要时)

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

    无论Appium服务器有多快,或者您的测试脚本是多少,Appium推送"执行"之间都存在延迟。命令到仪器工作队列以及何时在设备上执行。

答案 1 :(得分:1)

我在哪里可以找到有关此建议的更多信息(我使用的是ruby而不是java)和xpath很多,我想这可能是脚本执行时间过长的原因之一。

“停止使用Xpath定位器策略。在iOS上它很火,速度慢。使用UIAutomation或AccessibilityId定位器策略。”

答案 2 :(得分:1)

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