您的位置:首页 > 编程语言 > Python开发

初学者的Selenium自动化测试指南,基于Python(六)——如何设置元素等待

2017-07-20 20:17 1011 查看
    上一节基于Python的Selenium自动化测试(五)——常用键盘事件 中介绍了常用的键盘事件,这一节我们将继续介绍如何设置元素等待。

    WebDriver提供了两种类型的等待:显示等待和隐式等待。

一、显示等待

    在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。

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

    driver:WebDriver 的驱动程序

    timeout:最长超时时间,默认以秒为单位

    poll_frequency:检测的时间间隔,默认为 0.5 秒

    ignored_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException 异常。

    WebDriverWait()一般与 until()(或 until_not())方法配合使用。

    until(method, message=’ ’)                                 调用该方法,直到该方法返回值为 Ture。

    until_not(method, message=’ ’)                          调用该方法,直到该方法返回值为 False。

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

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

element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
element.send_keys("Selenium")
driver.find_element_by_id("su").click()
driver.quit()
二、隐式等待

    隐式等待是通过一定的时长等待页面元素加载完成。哪果超出了设置的时长,元素还没有被加载测抛NoSuchElementException 异常。 

    driver.implicitly_wait(timeout)

    timeout:最长超时时间,默认以秒为单位

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import ctime

driver=webdriver.Chrome()

#设置隐式等待为10秒
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")

try:
print(ctime())
driver.find_element_by_id("kv").send_keys('selenium')
except NoSuchElementException as e:
print(e)
finally:
print(ctime())
driver.quit()
更多关于Selenium自动化测试的源码,欢迎查看我的github
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐