selenium等待方式之显示等待

有时候,页面元素并未及时加载出来导致后面的步骤无法执行

这里就需要在加载前添加等待时间,让目标元素有足够的时间加载出来

第一种方法:使用time.sleep()

这种方法过于强制,无论元素是否加载出来都要等指定的时间,导致脚本执行效率不高

第二种方法:隐式等待implicitly_wait()

这种方法比较全局性,意味着一旦启用,全局有效,所有步骤都需要等待所有页面元素加载完后才会继续执行后续脚本

第三种:显示等待WebDriverWait

通俗的说法,指定的某元素,等待加载出来后,再执行后续操作。

这种等待方式可利用参数循环查询元素,超时即抛错

比如:

from selenium.webdriver.support.wait import WebDriverWait

browser = webdriver.Chrome()

WebDriverWait(browser,30,0.2).until(lambda x:x.find_element_by_xpath("//span[contains(text(),‘保存到网盘‘)]"))

超时时间30秒,每0.2秒查询一次,当能查询到xpath("//span[contains(text(),‘保存到网盘‘)]"时,执行后面的操作,否则直到达到超时时间后,程序异常出错

使用这种等待方式,需要import库

”from selenium.webdriver.support.wait import WebDriverWait“

原文地址:https://www.cnblogs.com/becks/p/11789827.html

时间: 2024-10-07 21:06:07

selenium等待方式之显示等待的相关文章

selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python

我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait().隐式等待implicitly_wait().强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别 在前面的博文中简单介绍了<强制等待和隐士等待的区别和理解>,本文再详细的结合案例进行理解. sleep(): 强

selenium3+python自动化15-三种等待方式

前言 在使用selenium自动化测试的过程中,必然会遇到环境不稳定,网络慢的情况,这时如果不做任何处理的话,经常会因代码没有找到元素而报错.这时我们就要进行设置,让其等待加载后再执行. 在Selenium中,可以用到三种等待方式:强制等待.隐式等待.显式等待,应该根据具体需求情况选择最优的等待方式. 一.强制等待:time.sleep(等待时间) 1.不管浏览器是否加载完了,程序都得等待设定的时间后才能运行 2.注意使用的时候需要先导入time模块:import time 3.这种方式的缺陷显

selenium中的显示等待,隐示等待,强制等待

我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait().隐式等待implicitly_wait().强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别: 1.显式等待  WebDriverWait()      显式等待是你定义的一段代码,用于等待某个条件发生然后再

Selenium学习之==&gt;三种等待方式

在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,我们需要选择最优的等待方式.下面我们来介绍三种等待方式. 第一种:固定等待(time.sleep()) 在开发自动化框架过程中,最忌讳使用Python自带模块的time的sleep方法进行等待,虽然可以自定义等待时间,但当网络条件良好时,依旧按照预设定的时间继续等待,

selenium 的隐式等待和显示等待

等待 现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了.如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常. 为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException 的概率.所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待. 隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行. 1.

Selenium中的几种等待方式,需特别注意implicitlyWait的用法(转)

最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. private boolean isElementPresent(By by) {     try { driver.findElement(by);       return true;     } catch (NoSuchElementException e) {       return

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

发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很多人在群里问,这个下拉框定位不到.那个弹出框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待.殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥速度慢,哥不跟你玩了,抛个异常撂挑子了. 那么怎么才能照顾到凹凸曼缓慢的加载速度呢?只有一个办法

转:Selenium中的几种等待方式,需特别注意implicitlyWait的用法

最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. private boolean isElementPresent(By by) {     try { driver.findElement(by);       return true;     } catch (NoSuchElementException e) {       return

Selenium的显示等待

? 1 2 3 4 5 6 7 8 9 Function<WebDriver, Boolean> waitFn = new Function<WebDriver, Boolean>() { @Override public Boolean apply(WebDriver driver) {     Point newPos = page.getWDGAttrDetail().getLocation();     return newPos.getY() != prePos.getY