• selenium的显示等待和隐式等待的理解


    设置隐式等待

    1、一次设置,后边的代码全部生效(全局生效,可修改)

    2、在元素定位的时候,如果找不到元素,轮询查询(每0.5秒查询一次),直到元素出现

    3、元素出现就不会再等了

    4、如果元素超时没有出现,就报错

    driver.implicitly_wait(10)

    设置显示等待

    1、每隔一段时间检测一次当前页面元素是否存在,

    2、如果元素出现就不再等了,继续执行后边的代码

    3、如果超过设置时间检测不到则抛出异常(TimeoutException)

    4、只对设置的元素生效

    操作格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

      driver:浏览器驱动

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

      poll_frequency:检测的间隔(步长)时间,默认为0.5S (也就是轮询时间)

      WebDriverWait()一般由until()或 until_not()方法配合使用

      expected_conditions类提供的预期条件判断的方法(这里介绍几种常用的)

      
    presence_of_element_located                          判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见
    visibility_of_element_located                             判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于 0
    visibility_of                                                         跟上面的方法做一样的事情,只是上面的方法要传入 locator,这个方法直接传定位到的 element 就好了
    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






     
     
    ------------------

    应用:
    from selenium import webdriver
    from selenium.webdriver.support.ui 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')
    #元素是否可见
    element = WebDriverWait(driver, 5, 0.5).until(EC.visibility_of_element_located((By.ID, "kw")))
    element.send_keys('selenium')
     
     
     
  • 相关阅读:
    编译Android源码
    Android Studio 更新
    ANDROID:替换系统桌面
    Linux目录树与文件系统
    主引导记录MBR
    Android开发使用run-as获取应用数据
    桥接模式
    工厂方法模式
    Floyd's Cycle Detection Algorithm
    用两个stack实现一个队列
  • 原文地址:https://www.cnblogs.com/Lara1798/p/12956648.html
Copyright © 2020-2023  润新知