自动化测试 | iframe和多窗口切换

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 内部的元素进行交互时。

测试脚本代码:

# 导包
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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值