iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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等待元素出现的方法有哪些
    这篇文章主要介绍了python等待元素出现的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python等待元素出现的方法有哪些文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Selenium 三种等待方式(强制等待、隐式等待、显示等待)
    1、强制等待(sleep) from time import sleep sleep(3) # 强制等待3秒 缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等...
    99+
    2024-04-02
  • Java+Selenium设置元素等待的方法详解
    目录简介设置元素等待显式等待隐式等待强制等待总结简介 本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要...
    99+
    2023-01-09
    Java Selenium设置元素等待 Java Selenium 元素等待 Java Selenium 元素
  • python list 增加元素的三种方
    python list 增加元素的三种方法append 翻译成中文是:追加在Python中append 用来向 list 的末尾追加单个元素,此元素如果是一个list,那么这个list将作为一个整体进行追加。例如:Python代码li=[...
    99+
    2023-01-31
    三种 元素 python
  • 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 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 三元条件判断的3种实现方法
    python 三元条件判断的3种实现方法 C语言中有三元条件表达式,如 a>ba:b,Python中没有三目运算符(:),但Python有它自...
    99+
    2023-01-31
    条件 方法 python
  • 如何用PHP删除数组中的指定元素(三种方法)
    PHP是一种强大的服务器端脚本语言,它提供了许多实用的功能和方法。在PHP中,可以使用数组来存储和管理数据,但有时候需要对数组进行修改,比如删除特定的元素。在本文中,我将为大家介绍如何使用PHP删除数组中指定的元素。PHP删除数组元素的方法...
    99+
    2023-05-14
  • Python selenium 八种定位元素的方式
    目录前言1:id定位2:name定位3:class_name定位4:tag_name定位5:link_text定位6:partial_link_text定位7:xpath定位8:cs...
    99+
    2024-04-02
  • python定位元素的方法
    python中实现定位元素的方法有以下几种通过id定位元素drive.find_element_by_id('id_value')通过name定位元素drive.find_element_by_name()通过tag_name定位元素dri...
    99+
    2024-04-02
  • Python删除列表中的多个元素【四种方法】
    文章目录 1 使用切片删除多个元素2 使用列表解析3 利用romove()函数4 利用pop()函数 1 使用切片删除多个元素 利用索引进行对应索引元素的删除 改变原始列表 my_list...
    99+
    2023-09-22
    python 开发语言 matplotlib
  • python删除列表中特定元素的几种方法
    目录前言思路方法1方法2:使用while循环方法3:for循环倒序删除空字符串方法4:拷贝原列表前言 题目如下: 给定一个仅包含大小写字母和空格 ’ ’ 的字...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作