• webdriver三种等待方法


    import time

    time.sleep()

    sleep()顾明思义就是睡觉的意思,就是脚本一旦执行到条语句sleep(10)就睡10s,再执行后面的语句,他是一个强制等待的方式,使得整个脚本暂停。但是这种方式会导致这个脚本运行时间过长,不到万不得已尽可能少用,特殊情况下,时间设置最好不超过1秒,一般0.5秒

    driver.implicitly_wait(10)

    implicitly_wait()方法用来等待页面加载完成(直观的就是浏览器tab页上的小圈圈转完),implicitly_wait(10),超时时间10s,10秒内一旦加载完成,就执行下一条语句;如果10秒内页面都没有加载完,就超时抛出异常,针对的是页面内全部的元素,必须是全部的元素都加载到dom中才会执行下一条语句。缺点就是如果你只是定位某一个元素,这个元素很快就加载好了,但是页面内有部分元素是通过ajax请求生成的元素,那么就会一直要等待他们也加载完成才行。

    显示等待的方法 WebDriverWait

    from selenium.webdriver.support.ui import WebDriverWait

    from selenium.webdriver.support import expected_conditions as EC

    from selenium.webdriver.common.by import By

     wait = WebDriverWait(driver,10,0.5)

     wait.until(EC.presence_of_element_located((By.ID,'KW')))

    这个是显示等待,可以针对某个元素定位,不浪费任何时间。

    下面咱们举个小栗子:

    #coding=utf-8
    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://www.bilibili.com/video/av24004208/")
    driver.implicitly_wait(20) #隐式设置20秒,应该可以让全部的元素加载到dom中
    num = len(driver.find_elements_by_xpath('//*[@class="list-box"]/li'))
    
    for i in range(num):
        try:
            path = '//*[@class="list-box"]/li['+str(i+1)+']'
            driver.find_element_by_xpath(path).click()
            time.sleep(2)
        except Exception as e:
            print(e)
        finally:
            pass

    此例子可以实现,B站中,循环点击列表中的每一个按钮

    import time
    from
    selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.bilibili.com/video/av24004208/") try: element = WebDriverWait(driver, 10,0.2).until( EC.presence_of_element_located((By.XPATH, '//*[@class="list-box"]/li/a[@title="p1"]')) ) element.click() time.sleep(5) except Exception as e: print(e) finally: pass

    此例子可以实现,点击某个按钮

  • 相关阅读:
    软件工程 四则运算 基于控制台。
    新学期 新气象
    http://www.cnblogs.com/091JN/
    201421123091 ONLY-JN
    201421123091 ONLY-JN
    C语言课程学习的总结
    实验13——结构体、文件的基本应用
    实验12——指针的基础应用2
    实验11——指针的基础应用
    实验十——一维数组的定义及引用
  • 原文地址:https://www.cnblogs.com/huaniaoyuchong/p/13949499.html
Copyright © 2020-2023  润新知