【UI自动化】一文搞懂三种等待方式,哪种等待最好?

        在Selenium中,有三种主要的等待方式,用于处理页面加载和元素定位时可能遇到的延迟。这三种等待方式分别是:

1.隐式等待(Implicit Wait)
        隐式等待是在查找元素时设置的超时时间,如果在规定时间内找到了元素,则立即执行相应的操作;如果超出规定时间仍未找到元素,则抛出NoSuchElementException异常。隐式等待对整个WebDriver的生命周期都起作用,只需设置一次即可。

driver.implicitly_wait(10)  # 设置隐式等待时间为10秒

2.显式等待(Explicit Wait)(推荐)
        显式等待是针对特定条件等待元素的出现或状态的变化,可以指定等待的最长时间。一般通过WebDriverWait类和预定义的等待条件来实现。显式等待只在需要等待的特定情况下使用,可以更精确地控制等待的条件和时间。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.ID, 'myElement')))

        除了等待元素在页面上出现,WebDriverWait还可以用于等待其他条件的出现。以下是一些常见的等待条件:

1)元素可见

element = wait.until(EC.visibility_of_element_located((By.XPATH, '//input[@name="username"]')))

2)元素存在(包括隐藏元素):

element = wait.until(EC.presence_of_element_located((By.XPATH, '//input[@name="username"]')))

3)元素可点击

element = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[@id="submit-btn"]')))

4)元素消失

wait.until(EC.invisibility_of_element_located((By.XPATH, '//div[@class="loading-spinner"]')))

5)页面标题包含特定文本

title = wait.until(EC.title_contains('Example Page'))

6)页面URL包含特定文本

url = wait.until(EC.url_contains('example.com'))

7)元素文本包含特定内容

element = wait.until(EC.text_to_be_present_in_element((By.ID, 'message'), 'Hello'))

8)元素属性值包含特定内容

pythonelement = wait.until(EC.attribute_contains((By.XPATH, '//input[@type="text"]'), 'placeholder', 'Enter your name'))

9)元素可选中

element = wait.until(EC.element_to_be_selected((By.XPATH, '//input[@type="checkbox"]')))

3.强制等待(Thread.sleep())(调试用)
        强制等待是通过线程休眠来强制等待固定的时间,不管元素是否已经准备好。一般情况下不推荐使用硬性等待,因为它无法灵活地适应页面加载速度的变化,容易导致不必要的等待时间。

import time
time.sleep(5)  # 等待5秒

        这三种等待方式各有优缺点,根据具体的测试场景和需求选择合适的等待方式非常重要。通常建议优先使用显式等待,辅以隐式等待,尽量避免使用强制等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值