zoukankan      html  css  js  c++  java
  • 5.设置元素等待

    一、显示等待

    根据WebDriverWait与ExpectedCondition的结合实现。 非全局的等待,只有依赖于该条件的代码才需要等待执行:

    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.Chrome()
    driver.get("http://www.baidu.com")   
    element = WebDriverWait(driver, 5,0.5).until(           
            EC.presence_of_element_located((By.ID, "kw")))
    element.send_keys('selenium')    
    driver.quit()

    WebDriverWait(driver, timeout,poll_frequency,ignore_exception)

    driver:浏览器驱动
    timeout:最长超时等待时间
    poll_frequency:检测的时间间隔,默认为500ms
    ignore_exception:超时后抛出的异常信息,默认情况下抛 NoSuchElementException 异常

    使用until()和until_not()方法,EC(expected_conditions)后面支持的预期判断条件有:

    title_is 判断当前页面的标题是否等于预期
    title_contains 判断当前页面标题是否包含预期字符串
    presence_of_element_located 判断元素是否被加在DOM树里,并不代表该元素一定可见
    visbility_of_element_located 判断元素是否可见(可见代表元素非隐藏,并且元素的宽和高都不等于0)
    visbility_of  与上一个方法作用相同,只是接收参数不同。上一个接收参数是定位,这一个参数是定位后的元素
    presence_of_all_elements_located 判断是否至少有一个元素存在于DOM树中。只要有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 判断该表单是否可以切换进去,如果可以,返回True并且switch进去,否则返回False
    invisbility_of_element_located 判断某个元素是否不存在于DOM树或不可见
    element_to_be_clickable() 判断某个元素是否可见并且是可以点击的
    staleness_of 等到一个元素从DOM树中移除,判断一个元素是否仍在DOM,可判断页面是否已经刷新
    element_to_be_selected 判断某个元素是否被选中,一般用在下拉列表
    element_selection_state_to_be 判断某个元素的选中状态是否符合预期,传入元素对象以及状态,相等返回True,否则返回False
    element_located_selection_state_to_be 与上一个方法作用相同,只是上一个方法参数是定位后的元素,该方法接收的参数是定位
    alert_is_present 判断页面上是否存在alert
    

      

    二、隐式等待

    相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。

    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.implicitly_wait(30) # 隐性等待,最长等30秒,如果条件已满足可以继续执行下面的
    driver.get('https://huilansame.github.io')
    print driver.current_url
    driver.quit()

  • 相关阅读:
    ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页
    dom4j API使用简介
    oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间
    一、导入、导出远程Oracle数据库
    JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
    实现JavaScript中继承的三种方式
    JavaScript 高级篇之闭包、模拟类,继承(五)
    IE JS编程需注意的内存释放问题
    浅谈javascript中的作用域
    LeetCode----Path Sum
  • 原文地址:https://www.cnblogs.com/lintest/p/11714615.html
Copyright © 2011-2022 走看看