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()