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

目标验证&元素等待
浙公网安备 33010602011771号