多視窗切換
阿新 • • 發佈:2021-12-06
有時候我們在視窗A點選一個連結跳轉到新視窗B,這時候可以用webdriver提供的相關方法來在多個視窗之間切換並操作不同視窗的元素。要想在多個視窗之間切換,首先要獲得每一個視窗唯一的識別符號號(也就是控制代碼),通過獲得的控制代碼來區分不同的視窗,從而對不同視窗的元素進行操作。
程式碼:
from time import sleep from selenium import webdriver from selenium.webdriver.common.by import By def test_baidu(): driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.maximize_window() driver.implicitly_wait(5) driver.find_element(By.LINK_TEXT, '登入').click() # 獲取當前控制代碼 current_window = driver.current_window_handle driver.find_element(By.LINK_TEXT, '立即註冊').click() # 獲取所有視窗控制代碼 windows = driver.window_handles# 切換到最後一個視窗控制代碼 driver.switch_to.window(windows[-1]) # 輸入使用者名稱和密碼.註冊賬戶 driver.find_element(By.ID, 'TANGRAM__PSP_4__userName').send_keys('username') driver.find_element(By.ID, 'TANGRAM__PSP_4__phone').send_keys('15092078614') driver.find_element(By.ID, 'TANGRAM__PSP_4__submit') sleep(3) # 切換到之前的視窗登入賬戶 driver.switch_to.window(current_window) sleep(3) driver.find_element(By.ID,'TANGRAM__PSP_11__userName').send_keys('username') driver.find_element(By.ID, 'TANGRAM__PSP_11__password').send_keys('password') driver.find_element(By.ID, 'TANGRAM__PSP_11__submit').click() sleep(3)
獲取當前視窗控制代碼: driver.current_window_handle
獲取所有控制代碼視窗: driver.window_handles
windows[-1]: 這裡邊的-1代表瀏覽器視窗的倒數第一個