• 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():判断元素是否被选择 

  • 相关阅读:
    你不知道的JavaScript(上)this和对象原型(二)
    hihocoder 1566 皇室成员的名字
    csu 1756: Prime
    csu 1770: 按钮控制彩灯实验
    csu 1898: 复盘拉火车
    csu 1901: 赏赐 OR 灾难
    csu 1909: Perfect Chocolate
    csu 1958: 数字游戏
    symfony2 环境搭建笔记
    php preg_match($p, $str, $match)方法简介
  • 原文地址:https://www.cnblogs.com/DeryKong/p/10657508.html
Copyright © 2020-2023  润新知