python—web页面操作之3种等待方式
一、强制等待
在web自动化测试中,有时候为了提高效率,要避免使用强制等待
使用场合:1、调试代码的时候;2、文件上传(系统的上传界面)
time.sleep(6)
import timefrom selenium import webdriver
driver=webdriver.Chrome() driver谷歌浏览器对象driver.get('http://www.sogou.com') 打开搜狗浏览器#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@maxlength="100"]').send_keys('nba')#定位到搜狗搜索按钮,点击搜狗搜索
driver.find_element_by_xpath('//input[@value="搜狗搜索"]').click()#需要休眠一下
time.sleep(2)
driver.find_element_by_xpath('//p[@class="title-summary "]').click()
为什么找不见元素?
因为确实没有这个元素,点击搜狗搜索后,页面处于加载中,而代码执行完点击搜索后,会立即执行下一行代码,所以元素没有找到
需要休眠一下
time.sleep(2)
二、隐形等待
1、只需要在打开浏览器的时候,设置隐形等待的超时时间,之后就不需要设置第二次,全局生效
2、如果隐形等待时间设置为10,driver.implicitly_wait(10):每次查找元素的时候,都有10s的时间去等待某个元素出现
3、打开浏览器马上加上隐形等待,养成习惯
4、局限性:对某些个元素的状态无法判断
from selenium import webdriverdriver=webdriver.Chrome() driver谷歌浏览器对象#设置隐形等待时间
driver.implicitly_wait(10)#打开搜狗搜索
driver.get('http://www.sogou.com')#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@name="query"]').send_keys('NBA')#定位到搜狗搜索按钮,点击butten
driver.find_element_by_xpath('//input[@type="submit"]').click()#定位title,点击title
driver.find_element_by_xpath('//p[@class="title-summary "]').click()#打印当前页面
print(driver.current_url)
设置隐形等待时间,时间是全局生效的,每个元素都需要等待10s
driver.implicitly_wait(10)
为什么不设置成6000s,因为当元素不存在的时候,会真的会等待6000s
三、显性等待
等待元素出现
等待元素可以被点击
等待元素可见(已经加载出来,但是不可见)
用法
wait
wait.until()
locator
from selenium import webdriver#显性等待路径
from selenium.webdriver.support.wait import WebDriverWait
#内置条件放在那
from selenium.webdriver.support import expected_conditions driver=webdriver.Chrome() driver谷歌浏览器对象
driver.implicitly_wait(10)#打开搜狗搜索
driver.get('http://www.sogou.com')
#定位到输入框,输入nba
driver.find_element_by_xpath('//input[@type="text"]').send_keys('nba')#定位到搜狗搜索butten,点击
driver.find_element_by_xpath('//input[@value="搜狗搜索"]').click()wait=WebDriverWait(driver,10,poll_frequency=0.2)
locator=('xpath','//p[@class="title-summary "]')
el=wait.until(expected_conditions.presence_of_element_located(locator))
el.click()print('hello world')
print(driver.current_url)
四、显性等待具体操作
显性等待路径
from selenium.webdriver.support.wait import WebDriverWait
内置条件放在那?
from selenium.webdriver.support import expected_conditions
1、初始化一个等待器,需要传3个参数
driver
timeout
poll_frequency
wait=WebDriverWait(driver,10,poll_frequency=0.2)
2、等待某个条件的发生,返回ture、false
导入条件可以自己定义,通常可以选用内置条件
3、准备元素的定位表达式
locator=(‘xpath’,’//p[@class="title-summary "]’)
el=wait.until(expected_conditions.presence_of_element_located(locator))
el.click()
python—web页面操作之3种等待方式相关推荐
- python selenium 等待元素出现_Selenium 3种等待方式
加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生. 常用的有3种等待方式:强制等待 隐式等待 显示 ...
- Python selenium —— 一定要会用selenium的等待,三种等待方式解读
发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很多人在群里问,这个下拉框定位不到.那个弹出框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加 ...
- Python selenium —— 一定要会用selenium的等待,三种等待方式解
转自 http://lib.csdn.net/article/48/50937?knId=1313 Python selenium -- 一定要会用selenium的等待,三种等待方式解 发现太多人 ...
- python的等待代码是什么_Python selenium 三种等待方式详解
1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...
- python三种等待方式_Python selenium 三种等待方式详解
本文摘自:http://blog.csdn.net/huilan_same/article/details/52544521 发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很 ...
- python操作数据库的几种方法_python对mysql数据库操作的三种不同方式
原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...
- Selenium 3种等待方式
加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生. 常用的有3种等待方式: 强制等待 隐式等待 显 ...
- selenium中三大切换 三种等待方式
前言 ui自动化测试,就是通过代码模拟手工操作,通过点击.拖拽.输入等方式,进行浏览器页面的操作,我们常用的web自动化测试工具,是selenium:同时在我们日常操作中,由于需要创建链接,加载页面, ...
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...
页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...
最新文章
- 2022-2028年中国医学模拟教育产品市场供需现状及投资战略研究报告
- 康力优蓝发布新品:让AI教育从概念变成现实!
- 计算机多媒体技术广泛应用于各个领域,多媒体技术发展前景计算机现状及
- Nexus安装及配置
- 使用OpenCV创建视频
- #25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用...
- 如果你正在使用CocoaPods,你的.gitignore会有什么?
- golang 包管理工具
- 如何在html中插入带圈数字,如何在Word 2013中输入20以内的带圈数字
- xposed框架android9.0,xposed仓库商店下载
- Ubuntu 20.4 ip地址修改
- android阿拉伯语言的数字
- pspice计算机仿真实验,基于OrCAD_PSpice二阶动态电路的计算机仿真分析
- 01 #pragma once用法总结
- 苹果开发者账号--关于邓白氏编码的申请
- 一个名牌大学毕业生心酸经历
- hdu 6078 Wavel Sequence
- UE打包时候生成多个PAK
- pyinstaller打包时候遇到d3dcompiler_47.dll缺失解决办法
- [USACO]1.2.2Milking Cows
热门文章
- 浅析网络流量分析原理:如何把二进制“天书”变成“人话”
- python在开头声明全局变量_全局变量声明Python
- Interview:算法岗位面试—11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录
- Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
- Paper之DL:深度学习高质量论文分类推荐(建议收藏,持续更新)
- AI:一个20年程序猿的学习资料大全—结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件——只有你不想要的,没有你找不到的
- 使用NLPIR 进行中文分词并标注词性
- javascript下載csv檔案
- [pymongo] pymongo.errors.CursorNotFound Exception
- 洛谷P1095守望者的逃离题解-伪动态规划/贪心