Appium(五)页面跳转之元素等待时间 WebDriverWait

       在我们进行自动化测试的过程中,可能会遇得到页面中的元素出现受到网络环境、设备性能等多种因素的影响,因此会出现元素加载的时间可能不一致,导致有的元素无法定位,超时报错,实际上呢,定位到的元素确实是正常加载了,只不过是出来的时间晚了一点而已,针对这样的情况,可以考虑下元素等待

目录

元素等待的好处

元素等待的类型

1、强制等待

2、隐式等待

3、显式等待

简单例子:


  • 元素等待的好处

        在自动化测试中,设置元素等待可以使制定等待定位元素的时间更加灵活,从而增加我们测试脚本的健壮性,也可以提高代码的执行效率

  • 元素等待的类型

1、强制等待

     设置固定的等待时间,使用 sleep() 方法即可实现

from appium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', xg_caps)
// 强制等待
time.sleep(5)

2、隐式等待

     是针对全部元素设置的等待时间

from appium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', xg_caps)
// 隐式等待
driver.implicitly_wait(5)

3、显式等待

      是针对特定的某个元素来设置的等待时间

from selenium.webdriver.support.ui import WebDriverWait

// 跳入文件后会发现,携带的有不同的参数
WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)

driver:// WebDriver
timeout:// 最长的超时时间,默认以秒为单位
poll_frequency:// 休眠时间的间隔时间,默认是 0.5 秒
ignored_exceptions:// 超时后的异常信息,默认情况下抛出 NoSuchElementException 异常

     WebDriverWait() 方法一般和 until() 或者 until_not() 方法配合使用,此外,Python中的 lambda 函数还提供了一个运行时动态创建函数的方法。

from capability import *
from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, 10).until(lambda x:x.find_element_by_id('elementid'))

简单例子:

from capability import *
from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, 5).until(lambda x:x.find_element_by_id('com.wandoujia.phoenix2:id/s5'))
driver.find_element_by_id('com.wandoujia.phoenix2:id/s5')

 

 

 

 

 

发布了37 篇原创文章 · 获赞 63 · 访问量 9677

猜你喜欢

转载自blog.csdn.net/xiao66guo/article/details/99429632