zoukankan      html  css  js  c++  java
  • 显示等待

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

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

    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

  • 相关阅读:
    2018
    线程的五大状态
    SQL 列转行与行转列
    python中元组(tuple)的拆包unkacping
    python字典的相关操作总结
    C语言使用typedef进行类型重定义
    C++中namespace的用法理解
    ping: unknown host 解决办法
    go环境变量配置liteide配置
    svn出现Authorization failed
  • 原文地址:https://www.cnblogs.com/zhuxibo/p/14148228.html
Copyright © 2011-2022 走看看