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

 静静 发布于 2022-12-20 17:47

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

以下是我的问题,

    有没有办法在模拟器上更快地执行我的测试,特别是在通过sendkeys()函数进入文本字段时?

    有没有什么方法可以在没有模拟器的情况下以无头方式运行我的测试?

Jess.. 9

不要在iOS上使用发送密钥

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

你应该使用setValueJava lib和typeruby lib

设置值使用情况

setValue在这里的 Java库中定义.

它应该在WebElement上调用.

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

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

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

其他优化的最佳实践

    不要使用"sleeps"来尝试等待元素 - 而是不断轮询驱动程序以查看元素是否显示和可点击.

    使用setValue而不是sendKeys

    停止使用Xpath定位器策略.在iOS上它很有趣而且很慢.使用UIAutomation或AccessibilityId定位器策略.

    只有在需要与元素交互时才能获取元素

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

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

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

1 个回答
  • 不要在iOS上使用发送密钥

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

    你应该使用setValueJava lib和typeruby lib

    设置值使用情况

    setValue在这里的 Java库中定义.

    它应该在WebElement上调用.

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

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

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

    其他优化的最佳实践

      不要使用"sleeps"来尝试等待元素 - 而是不断轮询驱动程序以查看元素是否显示和可点击.

      使用setValue而不是sendKeys

      停止使用Xpath定位器策略.在iOS上它很有趣而且很慢.使用UIAutomation或AccessibilityId定位器策略.

      只有在需要与元素交互时才能获取元素

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

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

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

    2022-12-20 17:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有