Selenium基础(五):目标验证&元素等待

是小鱼呀·2022-05-24 16:05·90 次阅读

Selenium基础(五):目标验证&元素等待

目标验证#

selenimun中几种常用的验证信息方法:title、current_url、text。

  • title:获取当前页面的标题
  • current_url:获取当前页面的url
  • text:获取当前页面的文本信息

以百度为例,验证点击【hao123】后是否跳转到正确的hao123页面

Copy
#-*-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提供了两种类型的元素等待:显示等待、隐式等待

  1. 显示等待(WebDriverWait类),使WebDriver等待某个条件成立时继续执行,否则在达到最大时间长时抛出超出时间异常
Copy
#********* # 显示等待,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秒尚未出现则抛异常

  1. 隐式等待(implicitly_wait),通过一定时长的等待页面上元素加载完成。如果超出了设置的时长,元素还未被加载,则抛出异常NoSuchElementException
Copy
#********* #隐式等待 #********* 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秒

posted @   是小鱼呀  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
目录