selenium 设置元素等待

webdriver 有2种等待方式:显式等待和隐式等待

显式等待

定义:使webdriver等待某个条件成立时继续执行,否则达到最大时长时抛出异常

WebdriverWait类是由WebDriver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则会抛出异常。

格式如下:

WebDriverWait(driver,timeout,poll_frequency = 0.5,ignored_exceptions = None)
  • driver:浏览器驱动
  • timeout:最长超时时间默认以秒为单位
  • poll_frequency:检测的间隔时间,默认为0.5S
  • ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常

WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。

  • until(method,message  = ‘‘+3)

调用该方法提供的驱动程序为一个参数,知道返回值为False

在以下示例中,通过as关键字将excepected_conditions重命名为EC,并调用presence_of_element_located()方法判断元素是否存在。

 1 #-*-coding:utf-8 -*-
 2 print("hello,world")
 3 from selenium import webdriver
 4 from selnium.webdriver.common.by import By
 5 from selnium.webdriver.support.ui import webdriverWait
 6 from selenium.webdriver.support import expected_conditions as EC
 7
 8 driver = webdriver.Firefox()
 9 driver.get(‘http://www.baidu.com‘)
10
11 element = webdriverWait(driver,5,0.5).until(
12                         EC.presence_of_element_located((By.ID,‘kw‘))
13                         )
14 element.send_keys(‘selenium‘)
15 driver.quit()

隐式等待

WebDriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0,用法相对简单。

 1 #隐式等待
 2 from selenium import webdriver
 3 from selenium.common.exceptions import NoSuchElementException
 4 from time import ctime
 5
 6 driver = webdriver.Firefox()
 7
 8 #设置隐式等待为10s
 9 driver.implicitly_wait(10)
10 driver.get("http://www.baidu.com")
11 try:
12     print(ctime())
13     driver.find_element_by_id(‘kw22‘).send_keys(‘selenium‘)
14 except NoSuchElementException as e:
15     print(e)
16
17 finally:
18     print(ctime())
19     driver.quit()

implicitly_wait()默认参数的单位为秒,延时等待是在设定好的时间内,不断进行元素定位(轮询),定位到了就继续执行,定位不到则在设定的时间后抛出异常。

原文地址:https://www.cnblogs.com/aszeno/p/10311135.html

时间: 2024-10-29 04:03:06

selenium 设置元素等待的相关文章

Python +selenium之设置元素等待

当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给元素的定位增加了困难.如果因为在加载某个元素时延迟而造成ElementNotVisibleException 的情况出现,那么就会降低自动化脚本的稳定性,我们可以设置元素等待时间改善这种问题造成的不稳定性. WebDriver提供了两种类型的等待,显示等待和隐式等待  显示等待: 显示等待使WebDriver等待某个条件成立时继续执行,否者在达到最大时长事会抛出超时异常(TimeoutException)

selenim学习:设置元素等待

显示等待 显示等待使Webdriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException) from selenium import webdriver from time import * from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support 

Selenium:元素等待的4种方法

1.使用Thread.sleep(),这是最笨的方法,但有时候也能用到而且很实用. 2.隐示等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉WebDriver查询Dom一定时间.默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用. WebDriver dr = new FirefoxDriver(); dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 3.使用javascrip

设置元素等待.py

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()driver.get("http://www.baidu.co

Selenium with Python 008 - WebDriver 元素等待

如今大多数Web应用程序使用Ajax技术,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成的,这给元素的定位增加了困难.如果因为在加载某个元素时延迟而造成ElementNotVisibleException的情况出现,那么就会降低自动化脚本的稳定性,我们可以通过设置元素等待改善这种问题造成的不稳定. WebDriver提供了两种类型的等待:含蓄等待和明确等待.明确等待作用于特定代码块,使得WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常:而含蓄等待,属于全

元素等待

为什么要设置元素等待?当你的网络慢的时候,打开网页慢,网页都没完全打开,代码已经在执行了,但是没找到你定位的元素,此时python会报错.当你的浏览器或电脑反应慢,网页没完全打开,代码已经在执行了,但是没找到你定位的元素,此时python也会报错.由于代码执行很快,而由于各方面的原因导致python代码报错,所以才要设置元素等待.是根据你的网速或电脑的情况而定来设置等待时间,没有一成不变的设置,这个需要注意. 1.time.sleep() 强制等待 优点:代码简洁,不啰嗦.缺点:假如你设置sle

python如何实现元素等待

一.为什么要元素等待? 在UI自动化过程中,元素的出现受网络环境.设备性能等多种元素影响.因此,元素加载和脚本运行到该元素的时间不一致,会报错:元素无法定位. 简单举下例子:实际UI自动化测试中,点击一个登录控件需要启动一个新activity界面,或需要加载弹框,或请求网络加载数据成功后刷新页面,此时需要等待一段时间,新界面出现了才能继续执行UI操作,否则数据还在加载ing,脚本已开始执行新界面操作的代码,脚本就会报错. 二.元素等待的作用 设置元素等待,增强脚本的健壮性,提高执行效率: 本质是

Python+Selenium笔记(十):元素等待机制

 (一) 前言 突然的资源受限或网络延迟,可能导致找不到目标元素,这时测试报告会显示测试失败.这时需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配,WebDriver为这种情况提供了隐式等待和显式等待两种机制. (二) 隐式等待 一旦设置隐式等待时间,就会作用于这个WebDriver实例的整个生命周期(对所有的元素查找都生效),设置隐式等待时间后,Webdriver会在一定时间内持续检测和搜寻DOM,以便于查找一个或多个不是立即加载成功并可用的元素.隐式等待的默认时间是0. WebDr

python selenium系列(四)元素等待

一 前言 在前面的selenium系列(二)元素定位方式和selenium系列(三)常用操作类型及方法两节中,已经介绍了web页面元素的识别定位.操作等技术,可能你会觉得掌握这两项技术就可以实施web自动化了,答案基本是这样的,毕竟元素定位和操作是核心技术.但是,在某些场景,脚本的运行并非预期那样,如,要操作的元素用常规方法无法识别.元素可以识别但在脚本运行时却未如期而至等.为了解决这些疑难杂症,接下来三节内容将会介绍处理这些问题的通用方法. 在本节,主要介绍元素等待的使用方法和场景,该方法是开