zoukankan      html  css  js  c++  java
  • 源码阅读篇:显式等待的执行过程

    显示等待语法

    以调用元素是否可见的方法为例,如下所示
    image.png

    解读:WebDriverWait(driver=dr, timeout=5)

    image.png
    概括:实例化了一个定时器对象,将对应的参数引用给了实例属性,这三个实例属性后面会在until中看到,记住意思

    解读:wait.until( expected_conditions.visibility_of_element_located(locator) )

    1. python执行代码时会优先执行完内部的代码

    expected_conditions.visibility_of_element_located(locator)
    image.png
    从图中得知,该代码只是执行了visibility_of_element_located类的实例化操作,至于locator是什么,暂时不管。

    2.然后开始执行外部代码--->wait.until(visibility_of_element_located实例化的对象)
    image.png
    从图中得知,内部调用了visibility_of_element_located的实例化对象,而调用对象本质是调用对象的__call__方法,引出下文

    3.解读visibility_of_element_located类中的__call__方法
    image.png
    查看_find_element()方法内部实现
    image.png
    到这里了,已经得知locator是什么,为什么需要使用元祖进行传参,以及为什么元祖中需要放元素表达式;都是为了最后能够给内部代码进行解包;同理,元素表达式存放在列表也能成功(已测试)

    然后继续往下看,如果没有查找到元素,就抛出时异常,如果找到就返回元素,然后回到上一个页面,继续执行下面这句代码,这次执行的是外面的方法,如下
    image.png
    进入_element_if_visible内部
    image.png
    函数结束,回到__call__内部
    image.png
    __call__代码执行结束,回到wait.until()方法中
    EFA99F43-B589-4DFB-B771-F4ADE0D01B43.png
    图中最后一段解释订正:如果当前时间超过截止时间

    然后显示等待的执行流程就说完了,除了知道显示等待的执行流程,还额外收获了一个定时器的写法(接口自动化中偶尔会用上)

    本文来自博客园,作者:中州韵,转载请注明原文链接:https://www.cnblogs.com/zhongzhouyun/p/14968000.html

  • 相关阅读:
    又是一年叶落时(二)
    动态规划 之 区间DP练习
    [hdu2255] 奔小康赚大钱
    [洛谷P1967] 货车运输
    [UVA1494] Qin Shi Huang's National Road System
    斜率优化总结
    latex一些有用的写法
    [YTU]_2384 ( 矩形类中运算符重载【C++】)
    [YTU]_2442( C++习题 矩阵求和--重载运算符)
    [YTU]_2640( 编程题:运算符重载---矩阵求和)
  • 原文地址:https://www.cnblogs.com/zhongzhouyun/p/14968000.html
Copyright © 2011-2022 走看看