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

 python+selenium 多視窗切換-window_handles

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

current_window_handle:獲得當前視窗控制代碼
window_handles:獲取所有視窗的控制代碼到當前會話,返回一個視窗控制代碼列表
switch_to.window():切換視窗控制代碼
# -*-coding:utf-8一*-
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()