element 方法返回的boolean被当成字符串了_python封装安卓查找元素方法!

9510b5f831b49bb668237409c220c7b7.png

b81627b1a3be26c0fe8113fd7b1d6f6d.png

66779d47be498a652cb61d77358a0d52.png

82b79c07cc386ef1b1bde7a12d559bc4.png

45e4cd96358f61b59f20731ad6d5c5cb.png

1c81349a9b93f52c8f0da3e4e39fc2ff.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种方法也可用,建议在使用场景时尽量考虑适合的等待方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值