zoukankan      html  css  js  c++  java
  • UI自动化之三种等待

    UI自动化中常用三种等待

    目录

    1、强制等待

    2、隐式等待

    3、显示等待

    1、强制等待

    执行到某一条语句后,然后sleep(3),等待3秒后,才会继续执行后面的语句

    2、隐式等待

    隐式等待只需要声明一次,一般在打开浏览器后进行声明。声明之后对整个drvier的生命周期都有效,后面不用重复声明。 

    隐式等待是等待页面加载完,才会继续执行后面的语句;也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步

    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    

      

    3、显示等待

    不同于隐式等待,显示等待是等待需要加载的元素加载完,就会继续执行后面的语句

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait                            
    from selenium.webdriver.support import expected_conditions as EC 
              
    driver = webdriver.Firefox()
    driver.get("http://XX.com")
    try:
        element =WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "Element")))
    finally:
        driver.quit()
    

    显示等待需要用到两个类:WebDriverWait和expected_conditions两个类

    3.1WebDriverWait

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

    driver:浏览器驱动

    timeout:最长超时时间,默认以秒为单位

    poll_frequency:检测的间隔步长,默认为0.5s

    ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常

    WebDriverWait()类中有untiluntil_not()和until_not()until_not()方法:

    until

    method: 在等待期间,每隔一段时间(__init__中的poll_frequency)调用这个传入的方法,直到返回值不是False

    message: 如果超时,抛出TimeoutException,将message传入异常

    until_not

     与until相反,until是当某元素出现或什么条件成立则继续执行,

     until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。

    3.2expected_conditions

    此类中各种方法,达到某种条件,返回True和False

    title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值

     title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值

     presence_of_element_located : 判断某个元素是否被加到了dom树里,并不代表该元素一定可见

     visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0

     visibility_of : 跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了

     presence_of_all_elements_located : 判断是否至少有1个元素存在于dom树中。举个例子,如果页面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True

     text_to_be_present_in_element : 判断某个元素中的text是否 包含 了预期的字符串

     text_to_be_present_in_element_value : 判断某个元素中的value属性是否 包含 了预期的字符串

     frame_to_be_available_and_switch_to_it : 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False

     invisibility_of_element_located : 判断某个元素中是否不存在于dom树或不可见

     element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable

     staleness_of : 等某个元素从dom树中移除,注意,这个方法也是返回True或False

     element_to_be_selected : 判断某个元素是否被选中了,一般用在下拉列表

     element_selection_state_to_be : 判断某个元素的选中状态是否符合预期

     element_located_selection_state_to_be : 跟上面的方法作用一样,只是上面的方法传入定位到的element,而这个方法传入locator

    alert_is_present : 判断页面上是否存在alert

  • 相关阅读:
    领域驱动设计(DomainDriven Design)
    Windows服务相关文档
    Attributes概述
    异步调用WebService方式!
    Msdn 杂志 asp.net ajax 文章汇集
    JavaScript
    常用数组效率比较
    Windows服务
    SOA实战
    Nunit使用方法
  • 原文地址:https://www.cnblogs.com/weizhideweilai/p/9703481.html
Copyright © 2011-2022 走看看