返回顶部
首页 > 资讯 > 后端开发 > Python >python里三种等待元素的方法
  • 876
分享到

python里三种等待元素的方法

三种元素方法 2023-01-31 05:01:11 876人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在做WEB或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了。那么我可以用等待 元素加载完成后再执行查找元素的code。 python里有三种等待的方式:

在做WEB或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素

还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了。那么我可以用等待

元素加载完成后再执行查找元素的code。

python里有三种等待的方式:
一、 强制等待

Sleep(54)
这个方法在time模块,使用时通过from time import sleep导入
比如:

Sleep(10) #表示强行等待10s再执行下一句代码
Driver.find_element_by_xpath(“xxxxxx”)

这种等待方式时间到了就执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。

二、 隐性等待

Implicitly_wait(xxx)
这个等待表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。

Driver=webdriver.Chrome()
Driver.implicitly_wait(10)#等待10s
Driver.get(“XXX”)

这个方法的缺点是你需要的元素已经加载出来了,但页面还没有加载完,再需要继续等待页面加载完才能执行下一步操作。
看看第三种方法,比较灵活

三、 显性等待

WebDriverWait,配合该类的until()和until_not()方法,表示程序每隔x秒去判断一下指

定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断,指定时间截

止。如果超时就会抛出异常。

from selenium import webdriver  
from selenium.webdriver.support.wait import WebDriverWait  
from selenium.webdriver.support import expected_conditions as EC  
from selenium.webdriver.common.by import By

locator=(By.XPATH,”xxxxxxx”)
d = webdriver.ChORMe()
d.get(“Http://www.sina.com”)
WebDriverWait(d,10,1).unitl(EC.presence_of_element_located(locator))
Print(“”XXX“”)

这里表示等待10s,每隔1s去检查一次元素是否出现,出现了就执行下一步,直到10s

结束后还没有出现就会抛出异常。

实例讲解:(用了yuuwee的博客内容: https://www.cnblogs.com/yuuwee/p/6635652.html

WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))
'''判断title,返回布尔值'''

WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
'''判断title,返回布尔值'''

WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
'''判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就
返回WebElement'''

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))
'''判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大
于0'''

WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))
'''判断元素是否可见,如果可见就返回这个元素'''

WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,
'.mnav')))
'''判断是否至少有1个元素存在于dom树中,如果定位到就返回列表'''

WebDriverWait(driver,10).until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR
,'.mnav')))
'''判断是否至少有一个元素在页面中可见,如果定位到就返回列表'''

WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='
u1']/a[8]"),u'设置'))
'''判断指定的元素中是否包含了预期的字符串,返回布尔值'''

WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECT
OR,'#su'),u'百度一下'))
'''判断指定元素的属性值中是否包含了预期的字符串,返回布尔值'''

#WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator))
'''判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否
则返回False'''
#注意这里并没有一个frame可以切换进去

WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#s
wfEveryCookieWrap')))
'''判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素'''
#注意#swfEveryCookieWrap在此页面中是一个隐藏的元素

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[
8]"))).click()
'''判断某个元素中是否可见并且是enable的,代表可点击'''
driver.find_element_by_xpath("//*[@id='wrapper']/div[6]/a[1]").click()
#WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='wrap
per']/div[6]/a[1]"))).click()

#WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,'su')))
'''等待某个元素从dom树中移除'''
#这里没有找到合适的例子

WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.XPAT
H,"//*[@id='nr']/option[1]")))
'''判断某个元素是否被选中了,一般用在下拉列表'''

WebDriverWait(driver,10).until(EC.element_selection_state_to_be(driver.find_element(By.
XPATH,"//*[@id='nr']/option[1]"),True))
'''判断某个元素的选中状态是否符合预期'''

WebDriverWait(driver,10).until(EC.element_located_selection_state_to_be((By.XPATH,"//
*[@id='nr']/option[1]"),True))
'''判断某个元素的选中状态是否符合预期'''
driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()

instance = WebDriverWait(driver,10).until(EC.alert_is_present())
'''判断页面上是否存在alert,如果有就切换到alert并返回alert的内容'''
print instance.text
instance.accept()

driver.close()

--结束END--

本文标题: python里三种等待元素的方法

本文链接: https://www.lsjlt.com/news/188494.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python里三种等待元素的方法
    在做web或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了。那么我可以用等待 元素加载完成后再执行查找元素的code。 Python里有三种等待的方式:...
    99+
    2023-01-31
    三种 元素 方法
  • python中3种等待元素出现的方法总结
    目录前言一、强制等待二、隐性等待三、显性等待总结前言 在做web或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,...
    99+
    2024-04-02
  • Python selenium的三种等待
    1、第一种是强制等待,也就是说,无论怎么样都要进行调用简单代码如下:from time import sleep sleep(3)#强制等待3秒2、第二种是隐形等待,隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一...
    99+
    2023-01-31
    三种 Python selenium
  • python Selenium等待元素出现的具体方法
    有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现。anonemail 类出现的时间各不相同。因此,我必须使用 sleep 直到元素出现。 我想等到课程出现而不是使用睡眠。我听说...
    99+
    2022-06-02
    python Selenium 等待元素
  • python等待元素出现的方法有哪些
    这篇文章主要介绍了python等待元素出现的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python等待元素出现的方法有哪些文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Selenium 三种等待方式(强制等待、隐式等待、显示等待)
    1、强制等待(sleep) from time import sleep sleep(3) # 强制等待3秒 缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等...
    99+
    2024-04-02
  • Python selenium 三种等待方式解读
    发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性。 很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。...
    99+
    2022-06-04
    三种 方式 Python
  • Java+Selenium设置元素等待的方法详解
    目录简介设置元素等待显式等待隐式等待强制等待总结简介 本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要...
    99+
    2023-01-09
    Java Selenium设置元素等待 Java Selenium 元素等待 Java Selenium 元素
  • Python selenium 三种等待方式详解(必会)
    很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的...
    99+
    2022-06-04
    三种 详解 必会
  • python list 增加元素的三种方
    python list 增加元素的三种方法append 翻译成中文是:追加在Python中append 用来向 list 的末尾追加单个元素,此元素如果是一个list,那么这个list将作为一个整体进行追加。例如:Python代码li=[...
    99+
    2023-01-31
    三种 元素 python
  • Python selenium的这三种等待方式一定要会!
    目录一、为什么要使用等待?二、常用的三种等待方式三、强制等待四、隐式等待五、显示等待六、模块用法汇总一、为什么要使用等待? 在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超...
    99+
    2022-06-02
    selenium等待方式 Python selenium
  • jquery怎么隐藏span元素(三种方法)
    在网页设计中,经常会使用到 jQuery 来实现一些动态效果。其中,控制元素的显示与隐藏也是常见的需求。在实现 span 元素的隐藏方面,jQuery 提供了多种方式,本文将对其中的一些方法进行介绍。一、使用 hide() 方法jQuery...
    99+
    2023-05-14
  • python元组tuple添加元素的两种方法
    python元组tuple添加元素的两种方法 方法一:可以使用python内置的__add__()方法,使用该方法为python元组添加元素时,需要使用元组来对象来进行调用,然后将需要添加的元素,以元组的数据类型进行传递,该方法并需修改调用...
    99+
    2023-09-01
    python 开发语言 数据结构
  • python自动化测试selenium核心技术三种等待方式详解
    目录1 使用python自带模块time的sleep方式     2 隐式等待(implicitly_wait)3 显示等待(Web...
    99+
    2024-04-02
  • Python 删除字典元素的4种方法
    1. Python字典的clear()方法(删除字典内所有元素)#!/usr/bin/python # -*- coding: UTF-8 -*- dict = {'name': '我的博客地址', 'alexa': 10000, 'ur...
    99+
    2023-01-31
    种方法 字典 元素
  • Golang切片删除指定元素的三种方法对比
    目录前言1.截取法(修改原切片)2.拷贝法(不改原切片)3.移位法(修改原切片)3.1 方式一3.2 方式二4.性能对比5.小结前言 Go 并没有提供删除切片元素专用的语法或函数,需...
    99+
    2024-04-02
  • Python实现列表删除重复元素的三种常用方法分析
    本文实例讲述了Python实现列表删除重复元素的三种常用方法。分享给大家供大家参考,具体如下: 给定一个列表,要求删除列表中重复元素。 listA = ['python','语','言','是','一'...
    99+
    2022-06-04
    三种 元素 常用
  • Python list列表删除元素的4种方法
    目录del:根据索引值删除元素 pop():根据索引值删除元素 remove():根据元素值进行删除 clear():删除列表所有元素 在 Python 列表中删除元素主要分为以下 ...
    99+
    2024-04-02
  • Python list列表删除元素(4种方法)
    在 Python 列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法; 根据元素本身的值进行删除,可使用列表(list类型)提供的 remo...
    99+
    2023-09-18
    python 开发语言 后端 Powered by 金山文档
  • 解读Python selenium的等待方式
    发现太多人不会用等待了,今天实在是忍不住要给大家讲讲等待的必要性。 很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不...
    99+
    2022-06-04
    方式 Python selenium
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作