zoukankan      html  css  js  c++  java
  • Python+Selenium学习--设置等待时间

    场景

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

    代码

    #!/usr/bin/env python
    # -*- codinfg:utf-8 -*-
    '''
    @author: Jeff LEE
    @file: 等待时间.py
    @time: 2018-09-21 15:55
    @desc:
    '''
    from selenium import webdriver
    #导入WebDriverWait
    from selenium.webdriver.support.ui import WebDriverWait
    import time
    
    driver = webdriver.Firefox()
    
    driver.get('https://www.baidu.com/')
    
    #WebDriverWait方法
    element=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("kw"))
    element.send_keys("uniquefu")
    
    #添加智能等待
    driver.implicitly_wait(10)
    driver.find_element_by_id("su").click()
    
    #添加固定等待时间
    time.sleep(10)
    driver.quit()

    优缺点

    sleep():强制等待,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样等待,不过不建议总用这种等待方式,太死板,严重影响程序执行速度 

    implicitly_wait():隐形等待,比sleep()更加智能,隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。注意这里有一个弊端,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,我仍得等到页面全部完成才能执行下一步

    WebDriverWait():显示等待,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。它主要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

    备注:

    WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
    driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
    timeout - 最长超时时间,默认以秒为单位
    poll_frequency - 休眠时间的间隔(步长)时间,默认为0.5 秒
    ignored_exceptions - 超时后的异常信息,默认情况下抛NoSuchElementException 异常

  • 相关阅读:
    h264 流、帧结构
    H264 帧结构分析、帧判断
    sigaction
    sigaction 用法实例
    sigaction函数的使用
    linux c 之signal 和sigaction区别
    linux 信号signal和sigaction理解
    Hamcrest使用
    Junit4中的新断言assertThat的使用方法
    Hamcrest Tutorial
  • 原文地址:https://www.cnblogs.com/uniquefu/p/9687211.html
Copyright © 2011-2022 走看看