写点什么

软件测试 | 元素定位方式与隐式等待

  • 2023-02-17
    北京
  • 本文字数:1066 字

    阅读完需:约 3 分钟

元素定位是 UI 自动化测试中最关键的一步,假如在自动化测试中没有定位到页面中的元素,也就无法完成对页面的测试操作。那么,我们在自动化测试中如何定位到想要的页面元素呢?下面介绍用 Appium 定位元素的方式。

1.Appium 定位元素的方式

定位页面元素有很多种方式,例如,可以通过 ID、accessibility_id、XPath 等方式进行页面元素的定位,也可以使用 Android 和 iOS 提供的定位方式实现页面元素的定位,具体如表 5-3 所示。

2.隐式等待

隐式古代是一种全局等待方式。设置了隐式等待时长,实际上是对页面中的所有查找元素的方法设置了加载时长,如果查找时间超出了设置时间则抛出异常。


假如在测试脚本中设置了隐式等待时长为 10 秒,测试脚本会在 10 秒内不停地执行查找页面元素的操作,如果在第 2 秒就找到了需要的元素,就停止查找且继续执行后面的测试代码,如果查找时间超出了设置时间,则测试代码抛出异常。


一旦在测试代码中设置了隐式等待,则隐式等待就会存在整个 WebDriver 对象实例的声明周期中,例如,元素定位的测试代码每次调用 find_element 或者 find_eleniumts 方法是时候,就会自动茶法隐式等待。


测试的实践证明,隐式等待比强制等待更加只能,后者只能选择一个固定的时间等待,前者可以在一个时间范围内智能地等待。


隐式等待的演示代码如下(Python 版和 Java 版)。

Python 版本

...self.driver = webdriver.Remote(server, desired_caps)self.driver.implicitly_wait(15)...
复制代码

Java 版本

...driver = new Androidver(remoteUrl,desiredCapabilites);driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);...
复制代码

执行上面的代码,会得到下面的日志信息(注意:下面的 xx 和 xxy 是元素 ID 属性的简写):

[W3C] Matched W3C error code 'no such element' to NoSuchElementError[BaseDriver] Waited for 1495 ms so far[WD Proxy] Matched '/element' to command name 'findElement'……[W3C] Matched W3C error code 'no such element' to NoSuchElementError[BaseDriver] Waited for 2707 ms so far[WD Proxy] Matched '/element' to command name 'findElement'……[HTTP] <-- POST /wd/hub/session/xx/element 200 6653 ms - 137[HTTP][HTTP] --> POST /wd/hub/session/xx/element/xxy/click[HTTP] {"id":"xxy"}
复制代码


从上述日志上可以看出,我们使用 Appium 进行元素查找的时候,查找失败后程序不会直接抛出异常停止测试脚本执行,而是每过一段时间去查找一次元素。上面的例子所示,在 6.7 秒左右查到了元素,此时结束等待,去执行点击操作。

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 元素定位方式与隐式等待_测试_测吧(北京)科技有限公司_InfoQ写作社区