python自动化如何检测页面是否成功返回_python封装安卓查找元素方法!

本文介绍了在Appium+Python自动化测试中如何处理页面加载等待问题,包括固定时间等待、WebDriverWait的显示等待以及隐式等待。详细讲解了WebDriverWait的各种预期条件,提供实用的等待策略建议。
摘要由CSDN通过智能技术生成

3d173b27b66f29f0c148b44827f4d4b8.png

59ddd77700e9866ad4779e4d9a0b3eef.png

9cf3fddac650404d861aef19bf85736c.png

6dd4a218171aa02876903640505f0cb1.png

269e694d9c5b59c294f260e8861775f4.png

59373cf2eeb55c3ffaa55ed79370544b.png

Python资源共享群:626017123

appium+python自动化实践之查找元素的等待方式

实际测试过程中,比如点击一个控件需要启动一个新activiy界面,或需要加载弹框,或请求网络加载数据成功后刷新界面,此时需要等待一段时间,新界面出现了才能继续执行UI操作,否则还在加载中,程序已开始执行新界面操作的代码,脚本就会报错了。

开始写测试脚本时,没有考虑到等待过程,导致脚本调试失败,报错后考虑到实践过程,于是添加了等待,搜索了一些资料,发现主要是通过以下3种方式实现:

1.固定等待时间:python time模块提供了sleep()方法

import time #添加 time 模块

sleep(5) #等待5s

2.WebDriverWait,显示等待方法

添加接口模块:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions

from selenium.webdriver.common.by import By

测试套件中调用:

WebDriverWait(driver,10).until(expected_conditions.xx())) # .xx()参考以下的 2)expected_conditions类提供的预期条件判断方法

WebDriverWait类是webdriver提供的等待方法,该类提供的until()和until_not()方法再根据判断条件expected_conditions进行等待,until()方法在返回为True时中断等待,until_not()方法在返回值为Flase时中断等待

1) WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver: webdriver实例对象

timeout: 最长超时时间

poll_frequency: 检测间隔时间,默认0.5s

ignored_exceptions: 超时后的异常信息,默认情况抛出NoSuchElementException异常

2)expected_conditions类提供的预期条件判断方法:

title_is:判断当前页面的title是否完全等于(==)预期字符串,返回布尔值

title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值

presence_of_element_located : 判断某个元素是否被加到了dom树里,并不代表该素一定可见

visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0

visibility_of : 跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了

presence_of_all_elements_located : 判断是否至少有1个元素存在于dom树中。

text_to_be_present_in_element : 判断某个元素中的text是否 包含 了预期的字符串

text_to_be_present_in_element_value : 判断某个元素中的value属性是否 包含 了预期的字符串

frame_to_be_available_and_switch_to_it : 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False

invisibility_of_element_located : 判断某个元素中是否不存在于dom树或不可见

element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable

staleness_of : 等某个元素从dom树中移除,注意,这个方法也是返回True或False

element_to_be_selected : 判断某个元素是否被选中了,一般用在下拉列表

element_selection_state_to_be : 判断某个元素的选中状态是否符合预期

element_located_selection_state_to_be : 跟上面的方法作用一样,只是上面的方法传入定位到的element,而这个方法传入locator

alert_is_present : 判断页面上是否存在alert

3.隐式等待Implicit Waits

查找元素的时候,如果没能立刻发现,就等待固定长度的时间,对整个driver的周期都起作用,只需要设置一次,加入后一直生效,直到修改隐式等待时间或 driver 退出。

driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS)

小结:appium 查找元素等待时间,比较常用的是显示等待方法(推荐),固定sleep时间和隐式等待这2种方法也可用,建议在使用场景时尽量考虑适合的等待方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值