zoukankan      html  css  js  c++  java
  • 隐式等待写法__和显示等待对比问题___及误区

    控制层代码示例:

    def su2(self,ss,CI,action):#函数封装
      I=1
      ic=-1
      while I < CI:#3种定位是52-41-3
        if I==CI-1:#比上面的I少1
          assert False,"找不到元素"
        ic=ic+1
        I=I+1
        try:
          eval("self.dr.find_element_by_"+ss[ic]+")."+action)
          break
        except:
          pass

    def X002(self,action):#定位元素
      ss=["id('kw1'","xpath('kw2'","name('wd'"] #三种定位方式,优先从左往右排序
      su2(self,ss,5,action)

    用例层代码示例:

    # coding=utf-8
    import unittest
    import X33
    import time
    from selenium import webdriver

    class AAA(unittest.TestCase):
      def setUp(self):
        self.dr=webdriver.Chrome()
        self.dr.implicitly_wait(5)
        self.dr.get("http://baidu.com")

      def test_001(self):
        X33.X002(self,"send_keys('selenium')")
        X33.SA(self)

    if __name__ =="__main__":
      unittest.main()

    显示等待和隐式等待比较:

    有三个元素,第三个为正确元素定位

    隐式定位完成  17.7秒

    显式定位完成   17.5秒

    第一个元素就定位成功情况

    隐式定位完成  7.5秒

    显式定位完成   8.5秒

    总结:

    在少变化的元素 使用隐式定位,

    在变化和更改频繁的元素 使用显式定位

    后面发现我有个误区,其实显式等待,主要是用来如:

    判断一个页面加载完或者某个元素(可以判断其他对象)在页面上若(干时间,不确定时间,所有显示可以智能等待)出现后,才接着执行下面的用例,没出现则抛异常

    而隐式等待,主要是:

    当脚本执行到某个元素定位时,如果元素可定位那么继续执行,如果元素定位不到,那么它将以轮询的方式不断的判断元素是否被定位到

    追加解释:

  • 相关阅读:
    学习的过程必须要知其所以然
    根据人类的学习与记忆过程来高效学习
    大脑的信息获取特点与记忆模式
    31个让你变聪明的有效方法
    心智模式:心智模式的更多资料
    心智模式:仁者见仁、智者见智
    心智模式:如何看待成败?
    心智模式:如何面对逆境?
    心智模式:认识你自己
    阿里巴巴JAVA工程师面试经验
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/8405472.html
Copyright © 2011-2022 走看看