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

多視窗切換

有時候我們在視窗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代表瀏覽器視窗的倒數第一個