zoukankan      html  css  js  c++  java
  • selenium的等待~

    既然使用了selenium,那么必然牺牲了一些速度上的优势,但由于公司网速不稳定,导致频频出现加载报错,这才意识到selenium等待的重要性。

    说到等待又可以分为3类,

    1.强制等待

    time.sleep(3)
    

     但是有一个问题,既然已知网速不稳定,那这个sleep的秒数如何确定,难道sleep max(最差的网络状态),显得有一些死板了。

    2.隐形等待

    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.implicitly_wait(30)  # 隐性等待,最长等30秒
    driver.get('https://www.baidu.com')
    

     即设置最大等待时间,如果网页全部加载完毕,则执行下一步,如果30秒还未加载完成,那么就不管了,后续xpath,css提取必定会提取失败。就必须加一个异常处理。

    3.显性等待

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Firefox()
    driver.implicitly_wait(10)  # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者
    driver.get('https://www.baidu.com')
    locator = (By.LINK_TEXT, 'CSDN')
    
    try:
        WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator)) # 20:等待最长时间 0.5:调用until或until_not间隔
        print(driver.find_element_by_link_text('CSDN').get_attribute('href'))
    finally:
        driver.close()
    
    $ WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
    
  • 相关阅读:
    SystemTap
    在qemu上运行BusyBox
    Initramfs 原理和实践
    在qemu环境中用gdb调试Linux内核
    [转载] 你所不知道的TIME_WAIT和CLOSE_WAIT
    Linux VXLAN
    :not伪类选择器一些错误的写法
    c# 微软小冰-虚拟女友聊天
    Django使用表单操作数据库
    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
  • 原文地址:https://www.cnblogs.com/zenan/p/9929712.html
Copyright © 2011-2022 走看看