selenium其他重要的Api

元素等待方法

认识等待

由于⽹络或其他原因,元素未能及时加载出来,⽽代码已执⾏,会触发异常,故要设置等待。代码执⾏过程中,第⼀次未找到元素,先不抛出异常。激活等待时间,在等待过程中如果找到元素就执⾏。

隐式等待

说明:定位元素时,如果能定位到元素则直接返回该元素,不触发等待,如果不能定位到该元素,则间隔一段时间后再去定位元素,如果在达到最大时长时还没有找到指定元素,则抛出元素不存在的异常NoSuchElementException。

代码:

driver.implicitly_wait(30)  //设置30秒的等待时间

注意:隐式等待针对全部元素生效。一般写在定位元素前面。

显示等待

说明:定位元素时,如果能定位到元素则直接返回该元素,不触发等待,如果不能定位到该元素,则间隔一段时间后再去定位元素,如果在达到最大时长时还没有找到指定元素,则抛出超时异常 TimeoutException。

实现方式:

from selenium.webdriver.support.wait import WebDriverWait  //导包
element = WebDriverWait(driver,10,0.5).until(lambda x:x.find_element(。。。。。))

说明: 针对单个元素⽣效,可以修改查找频率和超时时间。

强制等待

代码

time.sleep(10)  //强制等待10秒

说明:不灵活的等待。

frame切换

认识frame:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素,f12会发现有iframe标签

切换方法:

切换指定iframe:

driver.switch_to.frame(element)  //element代表iframe标签元素对象

进入子页面要出来可以使用下面代码:

driver.switch_to.default_content()

窗口(标签页)切换

多窗口:

点击超链接后,如果打开⽅式新窗⼝打开,那么就会出现多窗⼝。

切换原因:

selenium默认启动时,所有的焦点在启动窗⼝,那么意味着⽆法操作其他窗⼝的标签。

切换方法:

handles = driver.window_handles  //获取所有窗⼝句柄
driver.switch_to.window(handles[1])   //使⽤句柄切换窗⼝

句柄:窗⼝的唯⼀标识符。

窗口截图方法

UI自动化测试统一运行时无人值守,错误信息记录不是十分明确,可以进行截图加上错误消息快速分析错误。

代码:

filename = f"./img/{time.strftime('%Y%m%d%H%M%S')}.png"
driver.get_screenshot_as_file(filename)

上面的代码表示截图的图片统一放在当前目前的img目录下,图片用年月日时分秒来命名。

验证码处理方式

要进行后续业务操作就必须登录,自动化处理验证码的方式之一就是采用cookie。cookie是由服务器⽣成,存储在客户端的登录凭证。

举例:

使用cookie实现百度登录

1.先手工登录百度获取cookie。

登录百度后,在f12->网络->点击www.baidu.com->Cookie

在列表中找到一个叫BDUSS的,把对应的值复制保存下来。BDUSS是登录百度后的唯一身份凭证,拿到BDUSS就等于拿到帐号的控制权,实际网站测试中哪个是唯一身份凭证要问开发。

2.代码添加cookie,并刷新页面。

driver.get("https://www.baidu.com/")

data = {"name":"BDUSS","value":"xxx"}  //xxx就是之前复制的值。

# 将cookie塞入驱动对象中
driver.add_cookie(data)
print(driver.get_cookie("BDUSS"))
time.sleep(2)

# 刷新浏览器
driver.refresh()
posted @ 2025-12-10 00:38  蜀道,难  阅读(3)  评论(0)    收藏  举报