一、强制等待

在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种等待方式相关推荐

  1. python selenium 等待元素出现_Selenium 3种等待方式

    加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生. 常用的有3种等待方式:强制等待 隐式等待 显示 ...

  2. Python selenium —— 一定要会用selenium的等待,三种等待方式解读

    发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很多人在群里问,这个下拉框定位不到.那个弹出框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加 ...

  3. Python selenium —— 一定要会用selenium的等待,三种等待方式解

    转自  http://lib.csdn.net/article/48/50937?knId=1313 Python selenium -- 一定要会用selenium的等待,三种等待方式解 发现太多人 ...

  4. python的等待代码是什么_Python selenium 三种等待方式详解

    1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...

  5. python三种等待方式_Python selenium 三种等待方式详解

    本文摘自:http://blog.csdn.net/huilan_same/article/details/52544521 发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很 ...

  6. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  7. Selenium 3种等待方式

    加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生. 常用的有3种等待方式: 强制等待 隐式等待 显 ...

  8. selenium中三大切换 三种等待方式

    前言 ui自动化测试,就是通过代码模拟手工操作,通过点击.拖拽.输入等方式,进行浏览器页面的操作,我们常用的web自动化测试工具,是selenium:同时在我们日常操作中,由于需要创建链接,加载页面, ...

  9. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...

最新文章

  1. 2022-2028年中国医学模拟教育产品市场供需现状及投资战略研究报告
  2. 康力优蓝发布新品:让AI教育从概念变成现实!
  3. 计算机多媒体技术广泛应用于各个领域,多媒体技术发展前景计算机现状及
  4. Nexus安装及配置
  5. 使用OpenCV创建视频
  6. #25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用...
  7. 如果你正在使用CocoaPods,你的.gitignore会有什么?
  8. golang 包管理工具
  9. 如何在html中插入带圈数字,如何在Word 2013中输入20以内的带圈数字
  10. xposed框架android9.0,xposed仓库商店下载
  11. Ubuntu 20.4 ip地址修改
  12. android阿拉伯语言的数字
  13. pspice计算机仿真实验,基于OrCAD_PSpice二阶动态电路的计算机仿真分析
  14. 01 #pragma once用法总结
  15. 苹果开发者账号--关于邓白氏编码的申请
  16. 一个名牌大学毕业生心酸经历
  17. hdu 6078 Wavel Sequence
  18. UE打包时候生成多个PAK
  19. pyinstaller打包时候遇到d3dcompiler_47.dll缺失解决办法
  20. [USACO]1.2.2Milking Cows

热门文章

  1. 浅析网络流量分析原理:如何把二进制“天书”变成“人话”
  2. python在开头声明全局变量_全局变量声明Python
  3. Interview:算法岗位面试—11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录
  4. Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
  5. Paper之DL:深度学习高质量论文分类推荐(建议收藏,持续更新)
  6. AI:一个20年程序猿的学习资料大全—结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件——只有你不想要的,没有你找不到的
  7. 使用NLPIR 进行中文分词并标注词性
  8. javascript下載csv檔案
  9. [pymongo] pymongo.errors.CursorNotFound Exception
  10. 洛谷P1095守望者的逃离题解-伪动态规划/贪心