selenium UI自动化常见的找不到元素问题

本文主要探讨了selenium自动化测试中遇到的找不到元素的两种常见情况:新标签页的窗口切换和frame嵌套。对于新标签页,通过获取并切换到最新窗口来解决问题;对于frame嵌套,通过定位iframe并进行frame切换来确保元素能够被正确定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值