元素定位时间问题详解
一.前言:
在自动化过程中,元素出现受网络环境,设备性能等多种因素影响。因此元素加载的时间可能不一致,从而会导致元素无法定位超时报错,但是实际上元素是正常加载了的,只是出现时间晚一点而已。那么如何解决这个问题呢?
二.正文
1.元素等待作用
设置元素等待可以更加灵活的制定等待定位元素的时间,从而增强脚本的健壮性,提高执行效率。
2.元素等待类型
a.强制等待
设置固定的等待时间,使用sleep()方法即可实现
from time import sleep
强制等待5秒
sleep(5)
b.隐式等待
隐式等待是针对全部元素设置的等待时间
driver.implicitly_wait(20)
c.显式等待
显式等待是针对某个元素来设置的等待时间。
方法WebDriverWait格式参数如下:
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver : WebDriver
timeout : 最长超时时间,默认以秒为单位
poll_frequency : 休眠时间的间隔时间,默认为0.5秒
ignored_exceptions : 超时后的异常信息,默认情况下抛NoSuchElementException异常。
WebDriverWait()一般和until()或until_not()方法配合使用,另外,lambda提供了一个运行时动态创建函数的方法。
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id(“elementID”))
实战案例
element_wait.py
from find_element.xiaomi_login import driver
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver,3).until(lambda x:x.find_element_by_id(‘com.xiaomi.shopping:id/mainactivity_button_btn1’))
driver.find_element_by_id(‘com.xiaomi.shopping:id/mainactivity_button_btn1’).click()
三.写在最后:
没有一个寒冬不会过去,没有一个春天不会来临,不忘初心,继续坚持,相信你终会开出一朵是属于自己的花儿来。
- 定位页面元素之xpath详解以及定位不到测试元素的常见问题
- CSS position: absolute、relative定位问题不详解
- Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)
- z-index使用详解元素重叠及position定位
- LayoutInflater.inflate方法的详解及xml根元素的布局参数不起作用的问题
- IE7浏览器绝对定位被下边元素遮挡问题解决办法
- 转 div+css 背景图片的定位取图问题详解
- RobotFramework测试问题二:各种元素不能定位问题
- selenium对未在屏幕展示范围内的元素进行操作时,出现元素无法定位的问题解决
- Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)
- 【随笔】关于绝对定位absolute相对于父元素定位的问题
- IE 固定定位; li中有块元素的offset、问题
- selenium webdriver + java 进行元素定位时的页面跳转问题
- 【android】LayoutInflater.inflate方法的详解及xml根元素的布局参数不起作用的问题 - u011494050的专栏 - 博客频道 - CSDN.NET
- webdriver中定位元素,报无法找到元素的问题
- RF+Selenium2Library元素定位不到的问题
- 改良stack的push操作,使得从stack中获取最大元素的时间复杂度为O(1) [其实问题挺无聊]
- python获取时间及时间格式转换问题实例代码详解
- IE 固定定位; li中有块元素的offset问题
- Appium+python(3):解决APP内嵌H5页面元素无法定位问题