• app自动化----元素等待方法(显式等待和隐式等待)


    1.元素等待

    如果页面还没有完全显示出来,进行页面自动化操作的时候,会报找不到元素的错误。

    之前的解决方式是通过time.sleep() 暂停来实现等待,这种方式简单粗暴。设置等待多长时间,程序在运行的过程中就会等待这么长时间。

    因为自动化本来就是要比手工测试快。通过使用这种方式进行等待,无形中会浪费很多时间。

     

    2.隐式等待

    创建好driver 之后可以设置全局的全局的元素等待时间。

    比如说设置全局等待10秒,在代码执行的时候,查找元素,最长等待10秒,如果在第3秒的时候能够找到元素,那么剩下的7秒就不再等待。从而提高自动化的执行效率。

    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
    # 设置全局最长的元素等待时间
    driver.implicitly_wait(10)

    3.显示等待

    使用隐式等待,可以针对全局的元素进行设置最长等待时间。优点就是所有的元素等待都会使用最长的等待时间。但是缺点也很明显,假设设置的全局等待时间为10秒。那么如果开发工程师写的脚本中元素定位写错了,那么执行的时候肯定找不到这个元素,那么等待10秒

    显示等待可以设置针对单个元素设置最长等待时间,比如你在做自动化测试的过程中,根据经验某个元素需要等待比较长的时间才能出来,可以针对单个元素设置最长等待时间。其他元素不会受到影响

    from appium import webdriver
    from appium.webdriver.common.touch_action import TouchAction
    from selenium.webdriver.support.wait import WebDriverWait
    import selenium.webdriver.support.expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    import time
    
    desired_caps = {
        'platformName': 'Android',         # 测试Android系统
        'platformVersion': '7.1.2',        # Android版本 可以在手机的设置中关于手机查看
        'deviceName': '127.0.0.1:62001',   # adb devices 命令查看  设置为自己的设备
        'automationName': 'UiAutomator2',  # 自动化引擎
        'noReset': True,                   # 不要重置app的状态
        'fullReset': False,                # 不要清理app的缓存数据
        'appPackage':"com.sina.weibo",     # 应用的包名
        'appActivity': ".SplashActivity"   # 应用的活动页名称
    }
    
    # 打开微博
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
    
    # 每次打开都有广告加载界面
    # 针对单个元素设置最长的等待时间
    wait = WebDriverWait(driver,10)
    start_time = time.perf_counter()
    el1 = wait.until(EC.presence_of_element_located((By.ID,"com.sina.weibo:id/rightBtn_wrapper")))
    end_time = time.perf_counter()
    print(f'查找元素使用时间: {end_time-start_time}s')
    # el1 = driver.find_element_by_id("")
    el1.click()
  • 相关阅读:
    私有字段private也可以外部访问
    PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
    数据库删除重复数据
    常见主流数据库对比介绍
    php方法重载
    php 析构函数,构造函数
    php中常量 const属性,静态属性,静态的函数方法
    面向对象(1)
    HDU 5047 Sawtooth 高精度
    HDU 5239 Doom 线段树
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14913071.html
Copyright © 2020-2023  润新知