元素的显示等待与隐式等待

如今多数的Web程序都是用ajax技术,浏览器加载页面时,页面的元素可能并不是同事被加载的,因此要定位这些元素就非常困难,

如果因为在加载某个元素时延迟而造成ElementNotVisibleException的情况出现,那么就会降低自动化脚本的稳定性,这个情况可以通过设置元素等待

改善这种问题。

显式等待--使WebDriver等待某个条件成立时继续执行,否则达到最大时长时抛出超时异常timeoutexception

‘‘‘代码‘‘‘

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC
from time import ctime

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

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver,5,0.5).until(
EC.presence_of_element_located((By.ID,"kw"))

element.send_keys("the walking dead")
driver.quit()

‘‘‘代码‘‘‘

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exception=None)

driver:浏览器驱动

timeout:等待的最长时长默认秒

poll_frequency:步长0.5

ignored_exception:超时后的异常信息,,默认nosuchelementexception

WebDriverWait()一般搭配until()和until_not()使用

until(method,message=‘‘) 调用该方法提供的驱动程序作为一个参数,直到返回值为true

until_not(method,message=‘‘)调用该方法提供的驱动程序作为一个参数,直到返回值为false

presence_of_element_located()该方法判断元素是否存在或者是否被加载在dom树中,并不代表该元素一定可见

expected_conditions类提供了类似以上的处理方法,见书p97页

隐式等待--通过一定的时长等待页面上某元素加载完成,如果超出了设置的时长元素还没有被加载,则抛出nosuchelementexception异常

webdriver提供了implicitly_wait()方法来实现隐式等待,用法相对来说简单

时间: 2024-10-10 16:26:07

元素的显示等待与隐式等待的相关文章

selenium 的显示等待和隐式等待的区别(记录加强版)

什么是显示等待和隐式等待? 显示等待就是有条件的等待隐式等待就是无条件的等待 隐式等待 当使用了隐式等待执行测试的时候,如果 WebDriver 没有在 DOM 中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是 0 from selenium import webdriver browser = webdriver.Chrome() browser.implicitly_wait(10

基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待

一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openq

(java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待

selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待 本例包括窗口最大化,刷新,切换到指定窗口,后退,前进,获取当前窗口url等操作: import java.util.Set;import java.util.concurrent.TimeUnit; import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.openqa.selenium.By;import org.openqa.

selenium 找不到元素 (显式等待 和隐式等待的区别)

selenium自动化页面元素不存在异常发生的原因有一下几点: (1)页面加载时间过慢,需要查找的元素程序已经完成但是页面还未加载成功.此时可以加载页面等待时间. (2)查到的元素没有在当前的iframe或者frame中.此时需要切换至对应的iframe或者frame中才行. (3)元素错误. 解决页面加载时间所引起的元素找不到,我们可以为页面设置加载时间.时间的设置分为以下三种: (1)显式等待 显示等待是针对于某个特定的元素设置的等待时间,如果在规定的时间范围内,没有找到元素,则会抛出异常,

selenium相关导入By、Keys、WebDriverWait、ActionChains,显示等待与隐式等待

# -*- coding: utf-8 -*- """ @author: Dell Created on Tue Dec 24 12:33:56 2019 """ import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait#等待一个元素加载完成 from selenium.webdriver.support i

显示等待和隐式等待的区别

implicitly_wait():隐式等待,是设置的全局等待.设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常.隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束. WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常.默认检测频率为

显示等待和隐式等待

原文地址:https://www.cnblogs.com/come202011/p/12205129.html

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

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

selenium 的隐式等待和显示等待

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