美文网首页我爱编程
Appium基础(三)

Appium基础(三)

作者: xFlamingo | 来源:发表于2018-04-09 14:09 被阅读0次

    自动化测试不仅包括操作流,还包括对操作流结果的验证以及等待元素加载。

    在本文中将着重对“等待与验证结果”进行探讨。

    在实际应用中,我们常常会忽视页面跳转/加载等带来的延迟,这时去定位元素往往会报错,说定位不到这个元素。

    这种情况我们就需要增加延迟,常用的方法有以下三种。

    一、强制等待

    初学者最常用的sleep,这种方法使用简单,但添加多了之后程序运行效率低

    python用法:time.sleep(5)

    效果:强制等待5秒

    二、隐性等待

    使用方法也比较简单,只需在开头设置一次即可,效率比强制等待高一点

    python用法:driver.implicitly_wait(5)

    效果:设置隐性等待5秒,当该driver要定位元素时马上去定位一次,如果定位不到则等待5秒再去尝试定位一次

    三、显性等待

    这种方法笔者用的比较多,效率最高,程序运行比较流畅

    需要先导入WebDriverWait类,并且在设置appium启动参数时添加参数'automationName': "UiAutomator2",

    from selenium.webdriver.support.wait import WebDriverWait

    python用法:WebDriverWait(driver,10).until(lambda x: x.find_element_by_id("元素id"))

    效果:等待元素加载,默认每0.5秒去定位一次该元素,最多等待10秒,即如果该元素0.5秒就加载出来了,则只会等待0.5秒就会继续运行


    我们通常将一个流程写成一个测试函数,而流程的最后往往伴随着提示消息,一般为toast消息,我们验证结果的惯用手法是抓取toast消息,验证是否正确。

    验证toast消息

    这里也用到了上面的显性等待中的WebDriverWait

    python用法:WebDriverWait(driver,5 ).until(lambda x: x.find_element_by_xpath("//*[contains(@text,'toast消息')]"))

    效果:等待页面上出现包括该条“toast消息”的元素,默认每0.5秒去查询一次,最多等待5秒

    如果搜索的内容在页面上唯一,且没有报错,那就是成功找到该条消息,即流程成功执行。

    感谢阅读,欢迎转载。

    如有错误请及时指出,谢谢!

    如有问题请留言,我懂的必然会回复!

    共勉。

    相关文章

      网友评论

        本文标题:Appium基础(三)

        本文链接:https://www.haomeiwen.com/subject/pzqihftx.html