WebDriver 多表单和多窗口切换---(虫师《selenium3自动化测试实战--基于Python语言笔记19》)

1.多表单切换

driver.switch_to.frame(login_frame)# switch_to.frame()默认可以直接对表单的id或name属性传参
driver.switch_to.default_content()  # 回到最外层页面

2.多窗口切换

switch_to.window()方法可以实现不同的窗口间的切换

current_window_handle:获得当前窗口句柄

window_handles:返回所有窗口的句柄到当前会话

switch_to.window():切换对应的窗口

以百度首页和账号注册页为例:

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # 隐式等待10s
driver.get("http://www.baidu.com")

# 获得百度搜索窗口句柄
search_windows = driver.current_window_handle

driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()

# 获取当前所有打开的窗口句柄
all_handles = driver.window_handles

# 进入注册窗口
for handle in all_handles:
    if handle != search_windows:
        driver.switch_to.window(handle)  # 切换到注册窗口
        print(driver.title)  # 打印标题
        driver.find_element_by_name("userName").send_keys("username_4578")
        driver.find_element_by_name("phone").send_keys("13811111111")
        time.sleep(2)
        # driver.find_element_by_name("password").send_keys("123456")
        # driver.find_element_by_name("verifyCode").send_keys("xxxx")
        # 关闭当前窗口
        driver.close()


# 回到搜索窗口
driver.switch_to.window(search_windows)
print(driver.title)

driver.quit()
原文地址:https://www.cnblogs.com/kite123/p/11511004.html