如何在 Selenium 中使用 Python 处理框架?
selenium web driverautomation testingsoftware testing
我们可以在 Selenium 中处理框架。框架是 HTML 元素,它将一个文档嵌入到另一个文档中。HTML 有 `` 或 `
Selenium 提供了多个 API 来处理框架。它们如下所示。
switch_to_frame(id)
此方法用于通过框架 ID 识别框架,然后将焦点切换到该特定框架。
语法
driver.switch_to_frame("frameid"),其中 frameid 是 HTML 中 frame/iframe 标签下的 id 属性。
switch_to_frame(name)
此方法用于通过框架名称识别框架,然后将焦点切换到该特定框架。
语法 −
driver.switch_to_frame("framename"),其中 framename 是 HTML 中 frame/iframe 标签下的 name 属性。
switch_to_frame(webelement)
此方法用于借助框架 webelement 识别框架,然后将焦点切换到该特定框架。
语法 −
driver.switch_to_frame("frameclassname"),其中 frameclassname 是 HTML 中 frame/iframe 标签下 class 属性的名称。
switch_to_parent_frame()
此方法用于退出当前框架,之后我们可以访问框架外部的元素,但无法访问框架内部的元素。
switch_to_default_content()
此方法用于退出所有框架并切换页面焦点。一旦退出,我们将无法访问页面框架内部的元素。
示例
使用框架的代码实现。
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
# 最大化浏览器窗口
driver.maximize_window()
# 获取 URL
driver.get("https://the-internet.herokuapp.com")
# 刷新浏览器
driver.refresh()
driver.find_element_by_link_text("Frames").click()
driver.find_element_by_link_text("Nested Frames").click()
# 切换到指定名称的框架
driver.switch_to.frame("frame-bottom")
# 获取框架内的文本并打印到控制台
print(driver.find_element_by_xpath("//*[text()='BOTTOM']").text)
# 将当前框架移至页面级别
driver.switch_to.default_content()
# 关闭浏览器
driver.quit()

