iframe:
driver.switch_to.frame
是 Selenium WebDriver 中的一个方法,用于将 WebDriver 的上下文(或焦点)切换到指定的 iframe 元素上。在网页中,iframe 是一个内嵌的框架,它可以加载另一个 HTML 文档。当你需要与 iframe 内部的元素进行交互时,你必须先切换到该 iframe 的上下文中。
以下是一些关于 driver.switch_to.frame
方法的详细信息和使用示例:
方法功能
- 功能:将 WebDriver 的上下文切换到指定的 iframe 元素上。
- 参数:
- 可以是一个 iframe 元素的引用(通过
find_element
方法获得)。 - 可以是一个 iframe 的索引(如果页面中有多个 iframe,你可以通过索引来指定)。
- 可以是一个 iframe 的名称或 ID(作为字符串传递)。
- 可以是一个 iframe 元素的引用(通过
使用场景
- 当你需要自动化测试一个包含 iframe 的网页,并且需要与 iframe 内部的元素进行交互时。
测试脚本代码:
# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 获取浏览器驱动
driver = webdriver.Chrome()
# 将浏览器窗口最大化
driver.maximize_window()
# 打开url
url = r"D:\Learn\autoTest\rescource\注册实例.html"
driver.get(url)
# 填写主页面
driver.find_element(By.CSS_SELECTOR, "#user").send_keys("xback")
driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
driver.find_element(By.CSS_SELECTOR, "#tel").send_keys("112233")
driver.find_element(By.CSS_SELECTOR, "#email").send_keys("111111@qq.com")
# 切换到注册A
driver.switch_to.frame("idframe1")
# 填写A页面
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("lay")
driver.find_element(By.CSS_SELECTOR, "#passwordA").send_keys("1007")
driver.find_element(By.CSS_SELECTOR, "#telA").send_keys("19911007")
driver.find_element(By.CSS_SELECTOR, "#emailA").send_keys("1122300@qq.com")
# 切换到默认目录后再切换到注册B
driver.switch_to.default_content()
driver.switch_to.frame("myframe2")
# 填写B页面
driver.find_element(By.CSS_SELECTOR, "#userB").send_keys("xback1")
driver.find_element(By.CSS_SELECTOR, "#passwordB").send_keys("1111111")
driver.find_element(By.CSS_SELECTOR, "#telB").send_keys("13678990")
driver.find_element(By.CSS_SELECTOR, "#emailB").send_keys("123456@qq.com")
# 暂停6秒
sleep(6)
# 关闭驱动对象
driver.quit()
多窗口切换:
driver.window_handles
是 Selenium WebDriver 中的一个方法,它用于获取当前会话中所有打开的浏览器窗口(或标签页)的句柄(handle)列表。句柄可以理解为浏览器窗口的唯一标识符,它允许你在不同的窗口之间进行切换。
以下是一些关于 driver.window_handles
方法的详细信息和使用示例:
方法功能
- 功能:返回当前会话中所有打开的浏览器窗口的句柄列表。
- 返回值:一个包含所有窗口句柄的列表(list),每个句柄都是一个字符串。
使用场景
- 当你需要自动化测试一个包含多个窗口(或标签页)的网页时,你可能需要在这些窗口之间切换。这时,你可以使用
driver.window_handles
方法来获取所有窗口的句柄,并通过这些句柄来切换窗口。
测试脚本代码:
# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 获取浏览器驱动
driver = webdriver.Chrome()
# 将浏览器窗口最大化
driver.maximize_window()
# 打开url
url = r"D:\Learn\autoTest\rescource\注册实例.html"
driver.get(url)
# 获取当前窗口句柄
current = driver.current_window_handle
# 点击注册A网页
driver.find_element(By.CSS_SELECTOR, "#ZCA").click()
# 获取所有窗口句柄
handles = driver.window_handles
# 判断 不是 当前窗口句柄
for h in handles:
if h != current:
# 切换
driver.switch_to.window(h)
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("lay")
driver.find_element(By.CSS_SELECTOR, "#passwordA").send_keys("1007")
driver.find_element(By.CSS_SELECTOR, "#telA").send_keys("19911007")
driver.find_element(By.CSS_SELECTOR, "#emailA").send_keys("1122300@qq.com")
# 暂停 5
sleep(5)
# 关闭驱动对象
driver.quit()