selenium找元素,经常找不到元素报错:NoSuchElementException
初学者常见的
1、打开了新的标签页面switch_to_window()
(1)原因
![]()
在代码中很多哥标签页是window(窗口),我们在执行drvier.close()的时候其实就是关闭一个窗口
由于有些按钮打开的是新的窗口,而代码此时还在上一个窗口中执行,所以需要切换一下
(2)解决用法:
handles = driver.window_handles # 获取dirver的handles属性,返回的是列表一个个的窗口
# 切换到最后一个窗口
driver.switch_to.window(handles[-1])
(3)下面是封装的方法

2、frame嵌套
(1)原因
有的页面有多个iframe,iframe是用来在当前页面嵌套其他页面的内容,所以就会出现定位不到元素,检查页面内是否有frame,样式如下,可以看到下面也有body等内容

(2)解决用法:
element = self.find_element(*by) # 找到iframe元素的位置,by传的是数组
switch_to.frame(element) # 切换到对应的iframe
(3)封装的方法
def switch_to_frame(self, *by):
"""
切换到iframe中
参数 by:传入iframe的by类,格式 By.XPATH,'测试'
"""
ele = self.find_element(*by)
self.driver.switch_to.frame(ele)
def switch_to_default_frame(self):
"""
从iframe切换到主文档中
"""
self.driver.switch_to.default_content()
本文主要探讨了selenium自动化测试中遇到的找不到元素的两种常见情况:新标签页的窗口切换和frame嵌套。对于新标签页,通过获取并切换到最新窗口来解决问题;对于frame嵌套,通过定位iframe并进行frame切换来确保元素能够被正确定位。
1243

被折叠的 条评论
为什么被折叠?



