1. 程式人生 > 其它 >09-多視窗切換-window_handles

09-多視窗切換-window_handles

技術標籤:python+seleniumseleniumpython

1. 常用方法

使用背景:有些網站點選連結會新開啟一個tab,如下圖打開了兩個瀏覽器視窗;元素定位正確,除錯時一直報錯,原因是未切換到對應的視窗控制代碼,切換到對應的視窗控制代碼才可以正常操作

  • current_window_handle:獲得當前視窗控制代碼
  • window_handles:獲取所有視窗的控制代碼到當前會話,返回一個視窗控制代碼列表
  • switch_to.window():切換視窗控制代碼
# -*-coding:utf-8一*-
# @Time:2021/1/14
# @Author: 大海
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")

# 獲得百度搜索視窗控制代碼
search_windows = driver.current_window_handle
print(search_windows)

driver.find_element_by_link_text('登入').click()
driver.find_element_by_link_text("立即註冊").click()

# 獲得當前所有開啟的視窗的控制代碼
all_handles = driver.window_handles
print(all_handles)

# 切換到註冊視窗 方式1 通過判斷是否與當前視窗控制代碼一致
for handle in all_handles:
    if handle != search_windows:
        driver.switch_to.window(handle)
        driver.find_element_by_name("userName").send_keys('我是測試小白')
        driver.find_element_by_name('phone').send_keys('12345678910')
        time.sleep(2)
        # 後續步驟省略

# 切換到註冊視窗 方式2 通過獲取的所有視窗列表的索引切換
# driver.switch_to.window(all_handles[1])
# driver.find_element_by_name("userName").send_keys('我是測試小白')
# driver.find_element_by_name('phone').send_keys('12345678910')
# time.sleep(2)

driver.quit()