Selenium基础(五):目标验证&元素等待
目标验证#
selenimun中几种常用的验证信息方法:title、current_url、text。
- title:获取当前页面的标题
- current_url:获取当前页面的url
- text:获取当前页面的文本信息
以百度为例,验证点击【hao123】后是否跳转到正确的hao123页面
#-*-encoding:utf-8-*-
from selenium impor twebdriver
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
first_title=driver.title
print("The first page is:%s"%first_title)
driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[2]").click()
second_title=driver.title
print("The second page is:%s"%second_title)
expect_tltle="hao123_上网从这里开始"
if second_title == expect_tltle:
print(True)
元素等待#
WebDriver提供了两种类型的元素等待:显示等待、隐式等待
- 显示等待(WebDriverWait类),使WebDriver等待某个条件成立时继续执行,否则在达到最大时间长时抛出超出时间异常
#*********
# 显示等待,WebDriverWait
#*********
from selenium import webdriver
from selenium.webdriver.common.byimportBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
elelement=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
elelement.send_keys('Bela')
driver.find_element_by_xpath("//*[@id='su']").click()
driver.quit()
说明:显示等待是单独针对某个元素,设置一个等待时间如5秒,每隔0.5秒检查一次是否出现,如果在5秒之前任何时候出现,则继续向下,超过5秒尚未出现则抛异常
- 隐式等待(implicitly_wait),通过一定时长的等待页面上元素加载完成。如果超出了设置的时长,元素还未被加载,则抛出异常NoSuchElementException
#*********
#隐式等待
#*********
from selenium import webdriver
from elenium.common.exceptions import NoSuchElementException
from time import sleep,ctime
driver=webdriver.Firefox()
#implicitly_wait是隐式等待
#判断某元素,如果超过10秒未发现,则抛出异常
#如果在10秒内发现,则对该元素进行操作
driver.implicitly_wait(10)
driver.get("https://www.baidu.com")
try:
print(ctime())
driver.find_element_by_xpath("//*[@id='kww']").send_keys('Bela')
driver.find_element_by_xpath("//*[@id='su']").click()
except NoSuchElementException as e:
print(e)
finally:
print(ctime())
说明:隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10秒内出现,则继续向下,否则抛异常。可以理解为在10秒以内,不停刷新看元素是否加载出来。
显示等待和隐式等待的区别:
- 显示等待针对某个元素,需要在每个等待的元素面前进行声明
- 隐式等待针对所有元素,一般在打开浏览器后进行声明。对整个driver的声明周期都有效,后面不用重复声明
- 隐式等待缺点:脚本会一直等待整个页面的加载完成,但是有时候 页面的元素早加载完成,而浏览器比如JS内容加载较慢,而此时也需要等待
3.强制等待:
time.sleep(3)
用以设置固定的线程休眠时间(s),使得整个脚本暂停。但是这种方式会导致这个脚本运行时间过长,不到万不得已尽可能少用,特殊情况下,时间设置最好不超过1秒,一般0.5秒
作者: 是小鱼呀
出处:https://www.cnblogs.com/sophia12138/p/16305921.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)