元素定位时间问题详解

一.前言:web

在自动化过程当中,元素出现受网络环境,设备性能等多种因素影响。所以元素加载的时间可能不一致,从而会致使元素没法定位超时报错,可是实际上元素是正常加载了的,只是出现时间晚一点而已。那么如何解决这个问题呢?网络

二.正文ide

1.元素等待做用函数

设置元素等待能够更加灵活的制定等待定位元素的时间,从而加强脚本的健壮性,提升执行效率。性能

2.元素等待类型ui

a.强制等待ci

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

from time import sleepselenium

强制等待5秒it

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()

三.写在最后:

没有一个寒冬不会过去,没有一个春天不会来临,不忘初心,继续坚持,相信你终会开出一朵是属于本身的花儿来。

相关文章
相关标签/搜索