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()
