zoukankan      html  css  js  c++  java
  • Selenium之显式、隐式等待

    selenium自动化页面元素存在异常发生的原因有以下几点:

         ① 页面加载时间过慢,需要查找的元素程序已经完成,但是页面还未加载成功。此时可以加载页面等待时间。

         ② 查找的元素没有在当前的iframe或者frame中。此时需要切换会对应的iframe或者frame中才行。

         ③ 元素错误。

    解决页面加载时间所引起的元素找不到,可以为页面设置加载时间。时间的设置分为以下三种:

         1、显示等待   WebDriverWait()

         2、隐式等待   implicitly_wait()

         3、强制等待  sleep()

    WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

    说明: driver   -----  WebDriver的驱动程序

              timeout  ------ 最长超时时间,以秒为单位

              poll_frequency   ------- 休眠时间的间隔(步长)时间,默认为0.5秒

              ignored_exceptions  -------  超时后的异常信息,默认情况下抛NoSuchElementException异常

    例如:

             WebDriverWait(driver, 10).until(lambda driver:driver.findElement(By.Id("someId")));

             每隔0.5秒扫描一次检查是否有id为somdld的元素,10秒后没找到就不找了,抛异常。

    简单代码实现:

            import  time 

            from selenium import webdriver

            from selenium.webdriver.support.wait import WebDriver

            driver = webdriver.Chrome()

            driver.get("http://www.baidu.com")

            element = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("kw"))

            element.send_keys("selenium")

            # 添加智能等待

            driver.implicitly_wait(30)

            driver.find_element_by_id('su').click()

            time.sleep()

            driver.quit()        

  • 相关阅读:
    magento删除local.xml后必须要页面安装
    magento后台无法打开
    ubuntu安装phpmyadmin
    数据结构有关于最优二叉树——最优哈夫曼树的建立过程和哈夫曼编码
    计算后缀表达式的过程(C#)
    mysql语句的相关操作整理
    mysql在控制台里出现中文问号问题
    Wampserver由橙变绿的解决过程
    重装win7系统的过程
    数据结构(C#):图的最短路径问题、(Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/peipei-Study/p/11975253.html
Copyright © 2011-2022 走看看