ui自动化中,隐式等待和显示等待什么时候使用

隐式等待

在页面刷新加载时,页面元素还没有出来,这个时候如果去找元素就会找不到报错

或者点了一个菜单,页面加载时 

 用笨办法,就是用sleep等待固定的时间,这种浪费的时间比较多,就可以用隐式等待,只等待页面加载完,就不等待了,效率会提高一些

 


from selenium import webdriver
import time# 创建浏览器驱动对象
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()            # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了
# 访问网址
driver.get("http://42.192.62.186:8088/index.html#/")
driver.maximize_window()
# 账号密码
driver.find_element(By.CSS_SELECTOR, '#username').send_keys('sq3')
driver.find_element(By.CSS_SELECTOR, '#password').send_keys('123')
driver.find_element(By.CSS_SELECTOR, '#code').send_keys('999999')driver.find_element(By.CSS_SELECTOR,"#submitButton").click()
time.sleep(1)
driver.refresh()"""隐式等待, 就不需要下面两个强制等待了"""
driver.implicitly_wait(30)
# time.sleep(1)       # 刷新頁面有延迟
driver.find_element(By.XPATH,'//*[contains(text(),"文件上传")]').click()
time.sleep(1)
driver.find_element(By.XPATH,'//*[contains(text(),"单文件上传")]').click()
# time.sleep(1)       # 渲染页面有延时
ele= driver.find_element(By.CSS_SELECTOR, '#cover')

显示等待

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

可以用这个等待类,来进行针对性的等待

表示,我只针对要等的元素,进行等待, 而不是像隐式等待那样,等待页面全部

如下:是对二级菜单元素的等待


from selenium import webdriver
import time# 创建浏览器驱动对象
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()            # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了
# 访问网址
driver.get("http://42.192.62.186:8088/index.html#/")
driver.maximize_window()
# 账号密码
driver.find_element(By.CSS_SELECTOR, '#username').send_keys('sq3')
driver.find_element(By.CSS_SELECTOR, '#password').send_keys('123')
driver.find_element(By.CSS_SELECTOR, '#code').send_keys('999999')driver.find_element(By.CSS_SELECTOR,"#submitButton").click()
time.sleep(1)
driver.refresh()# driver.implicitly_wait(30)
time.sleep(1)       # 刷新頁面有延迟
driver.find_element(By.XPATH,'//*[contains(text(),"文件上传")]').click()from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# time.sleep(1)"""
我们等待最多10秒,直到页面上出现XPATH为"xxxx"的元素
如果在10秒内找到了该元素,就会继续操作"""
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//*[contains(text(),"单文件上传")]'))
)element.click()
  • presence_of_element_located    判断某元素是否被加到DOM树,不一定可见        (上面代码用到的)
  • visibility_of_element_located 判断某元素是否可见

使用场景,当某个一个元素加载特别缓慢,可以对它进行显示等待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cocos入门11:生命周期

Cocos Creator 是一个强大的游戏开发工具,它基于 JavaScript 或 TypeScript,并使用 cc.Class 系统来组织游戏逻辑。在 Cocos Creator 中,每个组件(包括场景、节点和组件脚本)都有其生命周期,这些生命周期函…

美业门店管理系统Java源码分享-【库存管理】的功能和作用

美业收银系统在美容行业中的作用和重要性体现在提高管理效率、提升客户满意度、降低成本、促进业务增长等方面。它为连锁美业提供了一个全面的管理工具,能够更好地应对市场挑战,提升竞争力。 美业系统中的【库存管理】在整个美容行业中起着非常重要的作…

深入理解ChatGPT工作原理

在人工智能领域,自然语言处理(NLP)技术的飞速发展让机器能够更加自然和人类进行交流。OpenAI的ChatGPT作为当前最受关注的NLP模型之一,其出色的对话能力引起了业界和学术界的广泛关注。本文将深入探讨ChatGPT的工作原理&#xff0…

【SpringCloud学习笔记】RabbitMQ(中)

1. 交换机概述 前面《RabbitMQ上篇》我们使用SpringAMQP来演示如何用Java代码操作RabbitMQ,当时采用的是生产者直接将消息发布给队列,但是实际开发中不建议这么多,更加推荐生产者将消息发布到交换机(exchange),然后由exchange路由…

Scala 入门指南:从零开始的大数据开发

为什么选择学习 Scala Scala 结合了面向对象编程和函数式编程的特性,使其既具有 Java 的稳健性,又具备 Haskell 的简洁和灵活性。Scala 兼容 Java,运行在 JVM 上,这意味着你可以无缝地使用 Java 库。此外,Scala 是 Ap…

护眼台灯攻略:护眼台灯真的有用吗?

当前,近视问题在人群中愈发普遍,据2024年的统计数据显示,我国儿童青少年的总体近视率已高达52.7%。近视的人越来越多,近视背后还潜藏着视网膜脱离、白内障、开角型青光眼等眼部疾病,严重的情况甚至可能引发失明。长时间…

C++关键字

C是一种强大的、面向对象的编程语言,它提供了一组关键字(keywords)用于定义语言的基本结构和功能。这些关键字是C语法中预先定义并保留的标识符,它们具有特定的含义,不能用作变量名、函数名或其他标识符。 以下是一些…

P3388 【模板】割点(割顶)

题目背景 割点 题目描述 给出一个 n 个点,m 条边的无向图,求图的割点。 输入格式 第一行输入两个正整数 n,m。 下面 m 行每行输入两个正整数 x,y 表示 x 到 y 有一条边。 输出格式 第一行输出割点个数。 第二行按照节点编号从小到大输出节点&am…

CNAS认证是什么?怎么做?

在全球化日益深入的今天,产品质量和安全已经成为企业生存和发展的重要基石。而在这个过程中,CNAS认证作为一种权威性的认可机制,发挥着不可替代的作用。那么,CNAS认证究竟是什么?我们又该如何进行这一认证过程呢&#…

van-list 遇到的问题

将公司项目H5页面重构的时候,有一个类似购物车的页面,需要上拉加载,下拉刷新。使用的UI组件的是vant,其中看起来van-list 很符合基本需求,就果断进行了copy 修改。但是,在进行具体的业务交互的时候突然发现…

有没有关于空三文件和空三定拍影像的相关资料呢。 新建空三影像显示坐标系与模型不一致如何解决?

答:可以检查一下空三xml文件,和模型的metedata文件的坐标系是否一样。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格…

【MySQL】表的基本增删查改(结合案例)

文章目录 1.前言2.插入数据(Create)2.1案例2.2单行数据全列插入2.3多行数据指定列插入2.4插入否则更新2.5替换 3. 读取数据(Retireve)3.1案例3.2全列查询3.3指定列查询3.4查询字段为表达式3.5为查询结果起别名3.6去重3.7where条件3.7.1案例 3.8排序3.9筛…

算法刷题【二分法】

题目: 注意题目中说明了数据时非递减的,那么这样就存在二分性,能够实现logn的复杂度。二分法每次只能取寻找特定的某一个值,所以我们要分别求左端点和有端点。 分析第一组用例得到结果如下: 成功找到左端点8 由此可知&#xff0…

[数据集][目标检测]胸部解剖检测数据集VOC+YOLO格式100张10类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):100 标注数量(xml文件个数):100 标注数量(txt文件个数):100 标注类别…

环境监控与管理平台

随着全球气候变化的日益严峻,环境监控与管理成为了当代社会不可或缺的重要任务。HiWoo Cloud平台,作为一款环境监控与管理平台,正以其卓越的性能、强大的功能和灵活的部署方式,为各行各业的环保事业提供强有力的技术支撑。 一、H…

被封号后,我终于明白免费代理的危害

在数字时代,网络已经成为人们日常生活和商业活动中不可或缺的一部分。为了实现更广阔的业务拓展和更畅通的网络体验,许多人开始考虑使用代理服务器。然而,虽然免费代理可能听起来像是个经济实惠的选择,但事实上,它可能…

CTFHUB-SQL注入-Cookie注入

由于本关是cookie注入,就不浪费时间判断注入了,在该页面使用 burp工具 抓包,修改cookie后面,加上SQL语句,关掉burp抓包,就可以在题目页面显示结果了 判断字段数量 发现字段数量是2列 使用id-1 union sele…

君子签帮助物流组织打造线上签约平台,助力简化成本,高效运转

各类物流组织日常业务可能涉及“企业入驻、快递、整车运输、货运、仓储、供应链等”多种类型,各个环节都存在大量的文件/单据签署,网点、客户、司机、收货人遍布全国各地,复杂的签署需求,以及庞大的签字、用印需求,让各…

MySQL 搭建主从报错 1236

错误信息: Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: Could not find first log file name in binary log index file 大致内容: MySQL 在尝试从二进制日志(binary log)中读取数据…

数据通信与网络

计算机网络的组成 计算机网络是由计算机系统、网络节点和通信链路等组成的系统。 逻辑上分为资源子网和通信子网。 CCP:communication control processor 通信控制处理机,网络节点,交换机、路由器等设备。 逻辑组成: &#xf…