自动化测试中 iframe 相关问题与解决方案拓展

基础在Selenium 处理 iframe 和 iframe 的基础介绍-优快云博客,不过这里也有部分重复喵

iframe 的基本切换

切换到 iframe

Selenium 提供 switch_to.frame() 方法:

# 根据 iframe 的 ID 切换
driver.switch_to.frame("iframe_id")

# 根据 iframe 的 name 切换
driver.switch_to.frame("iframe_name")

# 根据 WebElement 切换
iframe_element = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe_element)
切回主页面

执行完 iframe 内部的操作后,需切回主页面:

driver.switch_to.default_content()

处理 iframe 内的动态元素

如果 iframe 内部的元素是 Ajax 动态加载 的,即使 iframe 已经切换成功,仍然可能找不到元素。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 先切换到 iframe
driver.switch_to.frame("iframe_id")

# 等待 iframe 内的按钮加载完成
button = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "submit_button"))
)
button.click()

# 切回主页面
driver.switch_to.default_content()

处理 iframe 内的元素

iframe 内找到元素时,要确保已经成功切换到 iframe

# 先切换到 iframe
driver.switch_to.frame("iframe_id")

# 访问 iframe 内部的元素
button = driver.find_element(By.ID, "submit_button")
button.click()

# 切回主页面
driver.switch_to.default_content()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值