selenium常用的三种等待方式:sleep(),隐性等待,显性等待

1.强制等待

其一, 乃是最为简单且粗暴的法子, 即强行等待, 借助sleep(x), 迫使闪电侠等待x时长, 是这样进行的。

python 复制代码
from selenium import webdriver
import time
# 会开会话
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 强制等待3秒
time.sleep(3)
print(driver.current_url)
driver.quit()

强行处在等待状态, 不论你所用的浏览器究竟有没有完成加载, 程序都必然要等待三秒钟, 待这三秒钟时间一到, 就接着去执行后续的代码, 并不推荐频繁运用这样的强制处于等候状况的方法。

2.隐性等待

第二种隐性等待,(x),整个周期有效,x单位秒

python 复制代码
from selenium import webdriver
# 会开会话
driver = webdriver.Chrome()
# 隐性等待,最长等待30秒
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
print(driver.current_url)
driver.quit()

设置了一个最长等待时间, 此为隐形等待, 若在规定时间内网页加载 , 那么就执行下一步, 不然的话一直等到时间截止, 随后再执行下一步, 要注意这里存在一个弊端, 即程序会持续等待整个页面加载完, 也便是通常情况下你看到浏览器标签栏那个小圈不再转动的时候, 才会执行接下去的步骤, 然而有时候页面中想要的元素早就加载完毕了, 只是由于个别js之类的玩意儿特别慢, 我依旧得等到页面全部弄好才能执行下一步。

3.显性等待

第三种办法是显性等待, 配合该类的until() 方法, 再配合该类的() 方法, 就能够依据判断条件进行灵活等待了。它主要的意思是: 程序每隔x秒看一眼, 倘若条件成立, 那就执行下一步, 不然便继续等待, 直至超过设置的最长时间,然后抛出。

python 复制代码
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 会开会话
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
# 显性等待
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[text()=" - Web Browser Automation"]')))
driver.find_element_by_xpath('//a[text()=" - Web Browser Automation"]').click()
print(driver.current_url)
driver.quit()

我们进行了隐性等待与显性等待的设置, 于其他操作里, 隐性等待发挥着决定性的作用, 在某些情况中, 显性等待起到主要作用, 然而需要留意的是, 最长的等待时间由两者当中较大的那个决定, 在此例子里是20, 要是隐性等待时间大于显性等待时间, 那么该句代码的最长等待时间等同于隐性等待时间。

相关推荐
把头塞进显示器2 天前
电商平台-测试报告
python·selenium·pytest
2601_9622953314 天前
如何python实现网页的自动化
python·selenium·beautifulsoup·requests·网页自动化
程序员小远14 天前
自动化测试用例编写实例详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
2601_9622982715 天前
Python与Selenium结合的Web自动化测试全流程实践教程
自动化测试·python·selenium·web测试·pageobjectmodel
2601_9622982715 天前
【自动化测试】基于Selenium + Python的web自动化框架
自动化测试·python·selenium·测试用例·web框架
2601_9622955816 天前
python+selenium实现自动化测试
自动化测试·python·selenium·学习心得·web端测试
B2_Proxy17 天前
Selenium配置代理IP的完整指南:从启动参数到认证扩展
selenium·测试工具
weixin_4407305017 天前
Playwright介绍、特点、小例子还有与传统selenium的区别
selenium·测试工具·playwright
2601_9623878219 天前
web自动化测试实战教程【selenium/unittest/pytest】【共193课
selenium·pytest·devops·web自动化测试·unittest