zoukankan      html  css  js  c++  java
  • selenium等待

    有三种等待方法

    1.time.sleep(5)

      简单粗暴,强制等待5秒

    2.隐式等待

      driver.implicityly_wait(10)

     在所有执行前,如果没有找到都等待10秒,我试了,不好用,好多都不起作用,为什么不知道

    3.显式等待,针对某个元素,找不到之前等待,找到之后立刻执行下一句,查找时间超过给定时间就报错

    方法一

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    
    driver=webdriver.Chrome()
    driver.get("www.")
    wait=WebDriverWait(driver,10,0.5) #最多等待十秒,一个文件定义一次就可以了,
    wait.until(lambda driver:driver.find_element_by_xpath('aaa'))#找到该xpath对应的元素后,立刻执行下一步
    driver.find_element_by_xpath('aaa').click()#点击元素
    wait.until(lambda driver:driver.find_element_by_xpath('bbb'))#找到该xpath对应的元素后,立刻执行下一步
    driver.find_element_by_xpath('aaa').send_keys("bbb")#输入文本

    方法二

    用expected_conditions判断

    expected_condtions提供了16种判断页面元素的方法:

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

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

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

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

    5.visibility_of:跟上面的方法是一样的,只是上面需要传入locator,这个方法直接传定位到的element就好

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

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

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

    9.frame_to_be_availabe_and_switch_to_it:判断该frame是否可以switch进去,如果可以,则返回True并且switch进去,否则返回False

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

    11.element_to_be_clickable:判断某个元素是见并且是enable(有效)的,这样的话才叫clickable

    12.staleness_of:等某个元素从dom树下移除,返回True或False

    13.element_to_be_selected:判断某个元素是否被选中,一般用于select下拉表

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

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

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

    以上16种部分可以用下面的方法做等待判断

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    
    driver=webdriver.Chrome()
    driver.get("www.")
    wait=WebDriverWait(driver,10,0.5) #最多等待十秒,一个文件定义一次就可以了,
    locator=(By.XPATH,'aaa')
    wait.until(EC.presence_of_element_located(locator))#找到该xpath对应的元素后,立刻执行下一步
    driver.find_element_by_xpath('aaa').click()#点击元素
  • 相关阅读:
    那些会阻碍程序员成长的细节[6]
    那些会阻碍程序员成长的细节[5]
    那些会阻碍程序员成长的细节[4]
    那些会阻碍程序员成长的细节[3]
    基于SpringCloud的Microservices架构实战案例-在线API管理
    主机地址变更后,dubbo请求时依旧会寻址旧IP的问题
    基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密
    基于SpringCloud的Microservices架构实战案例-架构拆解
    程序员创业必读的几本书
    Java基础---二分查找
  • 原文地址:https://www.cnblogs.com/mghhzAnne/p/12162569.html
Copyright © 2011-2022 走看看