1. 程式人生 > 實用技巧 >selenium多視窗之間切換

selenium多視窗之間切換

1、多視窗的切換

  在自動化測試過程中有時候會出現多視窗的情況,指令碼開啟的視窗游標預設在第一個視窗上,此時需要定位第二個或者其他視窗就需要先切換視窗再定位(依據視窗的控制代碼切換,控制代碼是視窗唯一標識,相當於人的身份證)

  獲取多視窗方法:driver.window_handles(此方法返回的是一個控制代碼列表)

# 匯入包
from selenium import webdriver# 建立一個瀏覽器物件,訪問百度
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 1、列印當前控制代碼、標題、網址
print
('當前控制代碼:',driver.window_handles,'\n當前網址:',driver.current_url,'\n瀏覽器標題:',driver.title) # 定位hao123 hao = driver.find_element_by_css_selector('a.mnav:nth-child(2)') # 點選 hao.click() # 儲存當前開啟的網頁控制代碼 handles_list = driver.window_handles # 開啟瀏覽器後自動預設游標在第一個頁面,若不做切換動作,會一直預設在第一個開啟的視窗上 # 2、列印當前控制代碼、標題、網址(可見結果與上面結果相同)
print('當前控制代碼:',driver.window_handles,'\n當前網址:',driver.current_url,'\n瀏覽器標題:',driver.title) # 3、切換視窗後再列印控制代碼等 driver.switch_to.window(handles_list[1]) print('當前控制代碼:',driver.window_handles,'\n當前網址:',driver.current_url,'\n瀏覽器標題:',driver.title) # 關閉瀏覽器 driver.quit()

執行結果:

當前控制代碼: ['{5ced5958-394d-4ebf-9df7-c78125931219}']

當前網址: https://www.baidu.com/
瀏覽器標題: 百度一下,你就知道
當前控制代碼: ['{5ced5958-394d-4ebf-9df7-c78125931219}', '{91b37008-2425-4b41-b7ec-8470e0e020b3}']
當前網址: https://www.baidu.com/
瀏覽器標題: 百度一下,你就知道
當前控制代碼: ['{5ced5958-394d-4ebf-9df7-c78125931219}', '{91b37008-2425-4b41-b7ec-8470e0e020b3}']
當前網址: https://www.hao123.com/
瀏覽器標題: hao123_上網從這裡開始

結論:指令碼開啟瀏覽器多個頁面時,會自動預設游標在第一個視窗上,若需要操作其他視窗,需要依靠控制代碼切換到視窗再操作頁面