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()
    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    vue-element 时间选择器datepicker 第二次展示change无效,数据刷新页面不刷新
    uniapp
    mysql
    python
    pycharm
    从maven的debug compile到java的编译时注解(与springboot项目整合)
    关于H5+实现APP检查自动更新与 调用 plus.runtime.install 弹出不了安装界面问题
    Linux常用命令
    mybatis中sql语句必须用${}而不能不用#{}的情况
    Mybatis映射文件中的参数传递
  • 原文地址:https://www.cnblogs.com/TodayWind/p/14903615.html
Copyright © 2011-2022 走看看