IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> appium之三大等待 -> 正文阅读

[开发测试]appium之三大等待

appium之三大等待

三大等待很奇怪,很多人都爱问,但是说实在的,appUI自动化很少涉及到性能,所以其实只要你愿意等,强制等待和显式等待就够用,毕竟极端情况很少,但是我们还是来了解一下。

强制等待sleep

设置固定休眠时间,单位为秒

缺点:不智能,使用太多的sleep会影响脚本运行速度。

import time
#强制等待三秒
time.sleep(3)

隐式等待implicitly_wait

driver.implicitly_wait(10) #隐式等待10秒

由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常。

缺点:当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。某些情况下会影响脚本执行速度。

显式等待WebDriverWait

from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:浏览器驱动

timeout:最长超时时间,默认以秒为单位

poll_frequency:检测的间隔步长,默认为0.5s

ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。

上述内容,全是抄的,因为我认为我自己想出来的文案没人家牛逼。

接下来我们来看一下在实际调试中如何使用。

import os.path
import time
from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as  EC

server = 'http://localhost:4723/wd/hub'
caps = {
    "platformName": "Android",
    "deviceName": "JPF4C19123011893",
    "platformVersion": "10.0",
    "appPackage": "com.czb.webczbdemo",
    "appActivity": "com.czb.webczbdemo.MainActivity",
    "automationName": "uiautomator2",
    "noReset": "true",
    "unicodeKeyboard": "true",
    "resetKeyboard": "true"
}
driver = webdriver.Remote(server, caps)
# 这个就是显式等待,等待最长30秒,然后默认了0.5秒检查一次
wait = WebDriverWait(driver, 30)

# 通过find_element_by_id来获取元素
navigation_button = driver.find_element_by_id("com.czb.webczbdemo:id/webNavigation")
# 点击元素
navigation_button.click()
# 强制等待3秒
time.sleep(3)
# 通过find_element_by_class_name来定位元素
edit_text = driver.find_element_by_class_name("android.widget.EditText")
# 将元素中的内容清空
edit_text.clear()
# 强制等待3秒
time.sleep(3)
# 将新的地址放到输入框中
edit_text.send_keys("https://test-open.czb365.com/redirection/todo/?platformType=92611011&platformCode=18610899775")
# 通过find_element_by_class_name来定位元素
commit_button = driver.find_element_by_class_name("android.widget.Button")
# 点击前往按钮
commit_button.click()
# 隐式等待,在进入新网址之前,等待所有网页元素加载完成,最多等待10秒
driver.implicitly_wait(10)
# 通过find_elements来查找有相同定位信息的一组元素
oilstation = driver.find_elements_by_class_name("android.view.View")
# 将元素信息打印出来
print(oilstation)
# 打印这一组信息的数据类型
print(type(oilstation))
time.sleep(6)
# 通过xpath来定位元素并点击
stationone = driver.find_element_by_xpath("//*[@text='ZZ测试油站就将尽快尽快框架开卡']").click()
time.sleep(3)
# 直接定位到下一步并点击
driver.find_element_by_xpath("//*[@text='下一步']").click()
# 定位toast信息:通过xpath的方式寻找,//代表当前目录下的,*代表所有的,包含了'请选择油枪'文案的元素
please = ("xpath", "//*[contains(@text,'请选择油枪')]")


def get_toast(toast_element):
    # 等待10秒,每0.1秒找一次,until直到这个toast出现,这就是显式等待
    wait_toast = WebDriverWait(driver, 10, 0.1).until(EC.presence_of_element_located(toast_element))
    # 打印toast的文案
    print(wait_toast.text)


get_toast(please)
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:32:45  更:2021-07-27 16:34:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 4:05:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码