zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    自相关函数 互相关函数 平稳随机过程
    MC323发短信程序+MSP430F149
    labview notes
    DSSS FHSS
    dBm与功率(w)换算关系!
    int 正负相乘
    51单片机 1602液晶显示
    51单片机 AD转换
    51单片机 蜂鸣器
    51单片机 串口通信
  • 原文地址:https://www.cnblogs.com/huaniaoyuchong/p/13949499.html
Copyright © 2011-2022 走看看