zoukankan      html  css  js  c++  java
  • Selenium 中 强制等待、显示等待、隐式等待的区别

    设置元素等待

    为什么需要设置元素等待?

    • 因为,目前大多数Web应用程序都是使用Ajax和Javascript开发的;每次加载一个网页,就会加载各种HTML标签、JS文件 
    • 但是,加载肯定有加载顺序,大型网站很难说一秒内就把所有东西加载出来,不仅如此,加载速度也受网络波动影响
    • 因此,当我们要在网页中做元素定位的时候,有可能我们打开了网页但元素未加载出来,这个时候就定位不到元素,就会报错 
    • 所以,我们需要设置元素等待,意思就是:等待指定元素已被加载出来之后,我们才去定位该元素,就不会出现定位失败的现象了

    1、强行等待 设置固定的线程休眠时间

    from selenium import webdriver
    
    import time
    
    driver = webdriver.Chrome()
    
    # 访问网址
    driver.get('http://www.baidu.com')
    
    # 强行等待10秒
    time.sleep(10)
    
    # 去搜索
    input=driver.find_element_by_id("kw")

    2、显示等待 

       是单独针对某个元素,设置一个等待时间如10秒,每隔0.5秒检查一次是否出现,如果在5秒之前任何时候出现,则继续向下,超过5秒尚未出现则抛异常。

    from selenium import webdriver
    
    #加载驱动
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome()
    
    # 访问网址
    driver.get('http://www.baidu.com')
    
    # 显示等待
    # 设置等待实例,最多等待10,每0.5秒查看条件是否成立
    element=WebDriverWait(driver,10,0.5).until(
        # 条件:直到元素加载完成
        EC.presence_of_element_located((By.ID,"kw"))
    )
    
    # 去搜索
    input=driver.find_element_by_id("kw")

    3、隐式等待

       隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10秒内出现,则继续向下,否则抛异常。可以理解为在10秒以内,不停刷新看元素是否加载出来。

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    # 访问网址
    driver.get('http://www.baidu.com')
    
    # 隐式等待10秒
    driver.implicitly_wait(10)
    
    # 去搜索
    input=driver.find_element_by_id("kw")
  • 相关阅读:
    2008俱乐部高校行之中南民族大学
    [更新]MSDN中Webcast "WPF中的图形系统系列" 课程预告及反馈
    7月20日 武汉.NET俱乐部在线沙龙!
    2007武汉.NET俱乐部沙龙VS2008、WPF、Silverlight
    MSDN新年第一次WebCast总结
    [评]Microsoft Visual Web Developer 2008 Step by Step, Express Edition
    [老爸创作的歌词]我从瓦砾中站起
    [Expert MS IL Assembler]武汉.NET俱乐部在线沙龙与线下聚会
    2008开年大礼:《Application = Code + Markup》中文版面世
    2009武汉.NET俱乐部活动之黄冈站
  • 原文地址:https://www.cnblogs.com/wanglisen/p/14157023.html
Copyright © 2011-2022 走看看