zoukankan      html  css  js  c++  java
  • selenium的三种等待方法

    转载:https://www.cnblogs.com/mabingxue/p/10293296.html

    Selenium显式等待和隐式等待的区别
    1、selenium的显式等待
    原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
    (简而言之,就是直到元素出现才去操作,如果超时则报异常)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    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')
     
    element = WebDriverWait(driver,5,0.5).util(
                      EC.presence_of_element_located((By.ID,'kw'))
                        )  
    element.send_keys('hello')
    driver.quit()
     
     
     
    WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
    driver:浏览器驱动
    timeout:最长超过时间,默认以秒为单位
    poll_frequency:监测的时间间隔,默认为0.5
    ignored_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常
    WebDriverWait一般有until和until_not方法配合使用
    until(method,message)
    until_not(method ,message)

      


    2、selenium的隐式等待
    原理:隐式等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
    注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素

    1
    2
    3
    4
    5
    6
    7
    8
    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.implicity_wait(10)
    driver.get('http://www.baidu')

    implicity_wait()默认参数的单位为妙,本例中设置等待时长为10秒,首先这10秒并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位是,如果元素可以定位,则继续执行,如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。假设在第六秒定位到了元素则继续执行,若直到超出设置的时长10秒还没有定位到元素,则抛出异常。

    3.固定等待

       固定等待主要是调用time模块的sleep方法,固定等待几秒。例如:

     time.sleep(3),等待3S后在执行下一步操作

  • 相关阅读:
    golang 数据结构 优先队列(堆)
    leetcode刷题笔记5210题 球会落何处
    leetcode刷题笔记5638题 吃苹果的最大数目
    leetcode刷题笔记5637题 判断字符串的两半是否相似
    剑指 Offer 28. 对称的二叉树
    剑指 Offer 27. 二叉树的镜像
    剑指 Offer 26. 树的子结构
    剑指 Offer 25. 合并两个排序的链表
    剑指 Offer 24. 反转链表
    剑指 Offer 22. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/qixc/p/11792691.html
Copyright © 2011-2022 走看看