• 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(可执行方法, 超时时返回的信息)
    
  • 相关阅读:
    luogu_1168: 中位数
    luogu_4762: [CERC2014]Virus synthesis
    luogu_4287:双倍回文
    回文自动机学习笔记
    luogu_3645: 雅加达的摩天楼
    python爬今日头条(ajax分析)
    Python多进程multiprocessing.Pool()
    Python爬微博(ajax+mongo)
    python实用函数之join()
    python之tuple与list
  • 原文地址:https://www.cnblogs.com/zenan/p/9929712.html
Copyright © 2020-2023  润新知