• 显示等待


    显示等待优点:显示等待、若等待到了元素,就不会在进行等待,继续往下执行。若最大超时时间找不到元素,就进行报错。

           若想使用显示等待,则必须对元素定位进行修改,也就是说,显示等待必须对具体的某个元素定位,去主动声明。 

    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  # 提供条件判断函数
    
    # 显示等待,若等到元素,就不会再等了
    # 若想使用显示等待,则必须对元素定位进行修改
    # 也就是说,显示等待必须对具体的某个元素定位,去主动声明
    # 每隔 0.5s 检查一次元素是否存在,最多等待 5 s
    # 若在最大超时时间内,找到元素,就不等了,继续往下执行
    # 若最大超时时间还找不到元素,就报错
    ele = WebDriverWait(driver, 5, 0.5).until(
        EC.visibility_of_element_located(
            (By.CSS_SELECTOR,
             "#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(8) > div > div > h4")
        )
    )
    返回一个元素。
    
    #1.WebDriverWait(driver, 5, 0.5) 返回一个等待类的对象。请求参数:driver,最大超时时间,每多长时间去找一次元素。单位都是:秒
    #2.调用until方法,请求参数为:expected_conditions里面的visibility_of_element_located类对象。对象里面的初始化参数:      (By.CSS_SELECTOR,
             "#app > div:nth-child(1) > div:nth-child(1) > div.card.m-panel.card16.m-col-2 > div > div > div:nth-child(8) > div > div > h4")
        )
    定位元素的方法,定位的元素。

    2.封装一个方法

    # 将显示等待封装成了函数
    def waitEle(driver, timeout, poll_frequency, findType, findStr):
        '''
    
        :param driver: 浏览器driver
        :param timeout: 超时时间
        :param poll_frequency: 多长时间轮询定位一次
        :param findType: 定位的方式
        :param findStr:  定位的元素
        :return:
        '''
        ele = WebDriverWait(driver, timeout, poll_frequency).until(
            EC.visibility_of_element_located(
                (findType, findStr)
            )
        )
    
        return ele

     3.进一步优化:传入locator

  • 相关阅读:
    Android Studio打包过程和应用安装过程
    MVP模式和Clean模式
    Gradle入门学习---认识buildeTypes和dependencies
    微信小程序官方DEMO解读
    从ListView逐步演变到RecyclerView
    Mac下如何配置环境变量
    Android上滑手势触发和不增加布局层级扩大点击区域
    寻找Fragment的替代品的尝试
    高效的策略模式设计方法
    利用ListView的基本方法实现效果
  • 原文地址:https://www.cnblogs.com/zhuxibo/p/14148228.html
Copyright © 2020-2023  润新知