selenium 设置等待时间

有些网站打开地址或者进行操作后,页面需要加载几秒钟,或者等待某一元素加载完成后再继续下一步操作,这里就需要进行设置等待时间

导入time模块,time模块是python自带的,无需下载

一、设置等待时间有三种方法:

1、强制等待

time.sleep(time)     # 强制等待3秒后,进行下一步操作,也可以是小数,单位为秒

缺点:不能准确把握需要等待的时间(有时候操作未完成,等待就结束了,导致报错;有时候操作已经完成了,但时间还没到,浪费时间),如果再用例中大量使用,会浪费不必要的等待时间,影响用例的执行效率。

优点:使用简单,可以在调试时使用。

2、隐式等待 

driver.implicitly_wait(X),在X时间内,页面加载完成,进行下一步操作。

缺点:使用隐式等待,程序会一直等待页面加载完成,才会执行下一步操作

(有时候页面想要的元素早已加载完成了,但是页面上个别元素还没有加载完成,仍要等待页面全部完成才能执行下一步,使用 也不是很灵活)

优点:隐式等待对整个driver的周期都起作用,所以只要设置一次即可

3、显示等待 

from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait(driver, 超时时间, 调用频率, 要忽略的异常).until(要执行的方法, 超时时返回的错误信息)

优点:使用相对比较复杂

缺点:等地啊判断准确,不会浪费多余的等待时间,在用例中使用,可以提高执行效率

示例:打开登录页面,以登录按钮为页面加载成功的标志,如果20秒内,定位到登录按钮,就进行登录操作,不再继续等待,如果20秒内还没定位到登录按钮,下一步操作就会报错,并抛出异常。

from selenium import webdriver

import time

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expect_conditions as EC

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

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

# 加载等等,等待加载页面,根据目标页面特征元素进行判断

locatorLogin = (By.TAG_NAME,"button")

try:

WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located(locatorLogin))

print("登录页面加载出来啦")

except:

print("页面加载失败")

# 页面加载完成后,进行用例的相应操作

ownerSite = driver.find_element_by_id("ownerSite")

ownerSite.clear()

ownerSite.click()

ownerSite.send_keys(u"今天星期几")

......

......

二、WebDriverWait类

1、until() 

until()方法:直到条件成立返回为真,等待结束。如果超时,抛出TimeoutException,将message传入异常。

2、until_not()

until_not()方法:直到条件不成立返回为真,是当某元素消失或什么条件不成立则继续执行,等待结束。如果超时,抛出TimeoutException,将message传入异常。

3、excepted_conditions异常处理模块

expected_conditions是selenium的一个模块,其中包含一系列可用于判断的条件方法。

三、WebDriverWait自带的方法

is_displayed():判断元素是否被展示出来

is_enable():判断元素是否可操作

is_select():判断元素是否被选择

原文地址:https://www.cnblogs.com/DeryKong/p/10657508.html

时间: 2024-10-17 23:43:40

selenium 设置等待时间的相关文章

selenium python (五)打印信息及设置等待时间

#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #一般情况下我们要验证打开的页面是否正确,可通过网页的Title和Current_URL来验证 from selenium import  webdriverdriver = webdriver.Firefox()driver.get('http://www.baidu.com') #获取当前的网页标题driver.title #获取当前的页面URLdriver.cur

Python+Selenium学习--设置等待时间

场景 sleep():设置固定休眠时间.python 的time 包提供了休眠方法sleep() ,导入time 包后就可以使用sleep()进行脚本的执行过程进行休眠.implicitly_wait():是webdirver 提供的一个超时等待.隐的等待一个元素被发现,或一个命令完成.如果超出了设置时间的则抛出异常.WebDriverWait():同样也是webdirver 提供的方法.在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常. 代码 #!

Selenium Webdriver——设置等待时间

1.隐式等待 implicitlyWait(): 当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常 当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0 一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢, 它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间. driver.manage().t

使用firefoxprofile,selenium设置firefox,初始化firefox

1.什么是firefoxprofile       简单的来说就是个人定制,比如你设置自己访问主页,禁用加载图片这些个性化的设置,都可以保存到一个文件夹下,就是firefoxprofile,下次使用时候,加载该firefoxprofile,就可以让自己火狐浏览器设置跟之前配置一样 2.为什么selenium要用firefoxprofile      我们自动化测试的时候,有时不需要图片加载出来,提高浏览器加载速度,从而提高脚本的执行速度.另外在一些网络比较差的环境下,禁用css.图片等加载可以提

phantomjs和selenium设置proxy、headers

设置ip 方法1: service_args = [ '--proxy=%s' % ip_html, # 代理 IP:prot (eg:192.168.0.28:808) '--proxy-type=http', # 代理类型:http/https '--load-images=no', # 关闭图片加载(可选) '--disk-cache=yes', # 开启缓存(可选) '--ignore-ssl-errors=true' # 忽略https错误(可选) ] driver = webdriv

selenium 设置元素等待

webdriver 有2种等待方式:显式等待和隐式等待 显式等待 定义:使webdriver等待某个条件成立时继续执行,否则达到最大时长时抛出异常 WebdriverWait类是由WebDriver 提供的等待方法.在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则会抛出异常. 格式如下: WebDriverWait(driver,timeout,poll_frequency = 0.5,ignored_exceptions = None) driver:浏览

selenium设置user-agent以及对于是否是浏览器内核进行反爬

(Session info: chrome=75.0.3770.90),不同版本方法可能会有些不同 推荐查资料网站必应可以避开一堆广告 一.user-agent设置 from selenium import webdriver # 进入浏览器设置 options = webdriver.ChromeOptions() # 更换头部 options.add_argument('user-agent=ywy') browser = webdriver.Chrome(options=options)

【selenium——添加等待时间】

a.添加固定的休眠时间,引入time包     python的time包提供的sleep()方法 例如: 1 #coding=utf-8 2 from selenium import webdriver 3 import time 4 5 browser=webdriver.Firefox() 6 browser.get("http://www.baidu.com") 7 time.sleep(10) #打开页面等待10秒 8 browser.find_element_by_id(&q

Selenium设置Firefox启动

1.如果按照firefox的时候,不是选择默认路径,在Selenium中就无法打开Firefox浏览器,需要指定路径来实现 System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); driver = new FirefoxDriver();