zoukankan      html  css  js  c++  java
  • Selenium之等待机制

    Selenium之等待机制

    用于网络延迟严重场景,避免代码执行较快,但是遇到标签还没有加载完成就对该标签进行操作,就会出现报错在selenium中,有三种等待机制可用:

    1.显式等待,当有需要等待的标签时,才去使用等待

    2.隐式等待,在浏览器对象创建之初,就为这个对象添加一个被动,即隐式等待,当遇到查找标签的时候,就自动触发被动也就是隐式等待

    3.强制等待,time.sleep(1),休眠

    from time import sleep
    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.Chrome()
    
    driver.get('http://www.baidu.com')
    driver.find_element_by_id('kw').send_keys(r'断浪狂刀忆年少-cnblogs')
    driver.find_element_by_id('su').click()
    # 显示等待
    wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=0.5)  # timeout超时时间,poll_frequency轮询,每%s秒去检查一下标签有没有加载成功
    wait.until(EC.visibility_of_element_located(
        (By.LINK_TEXT, '断浪狂刀忆年少 - 博客园'))).click()  # 直到找到加载成功找到这个元素后,在进行事件操作(By.LINK_TEXT,'断浪狂刀忆年少 - 博客园')这里要用元组
    sleep(1)
    driver.quit()
    
    # 隐式等待
    driver.get('http://www.baidu.com')
    driver.find_element_by_id('kw').send_keys(r'断浪狂刀忆年少-cnblogs')
    driver.find_element_by_id('su').click()
    driver.implicitly_wait(30)  # 隐式等待
    driver.find_element_by_link_text('断浪狂刀忆年少 - 博客园').click()
    
    sleep(1)
    driver.quit()
    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    git处理冲突提交,撤销提交命令
    RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合
    JVM进程的优雅关闭
    MySQL字段等值查询时,尾部有空格也能匹配上的坑
    带有连接池的Http客户端工具类HttpClientUtil
    比较两个jar包的版本号
    源码解读SLF4J绑定日志实现的原理
    log4j输出到控制台的性能问题
    多表查询
    分页优化
  • 原文地址:https://www.cnblogs.com/TodayWind/p/14903615.html
Copyright © 2011-2022 走看看