在實際的自動化測試過程中往往會遇到我們的產品點擊頁面中的元素後,會啓動瀏覽器新的頁籤,注意此處說的瀏覽器頁籤並不是我們系統內的標籤,而啓動了瀏覽器第二個頁籤後,就意味着我們的自動化程序要在兩個頁籤內切換完成一些交互,因此切換頁籤便成了一個課題。
def test_switch_window_handle(self): # 定義測試方法
chrome_driver = webdriver.Chrome() #啓動瀏覽器
chrome_driver.get("http://www.baidu.com") #打開百度首頁
baidu_main_handle = chrome_driver.current_window_handle # 獲取當前瀏覽器句柄
print(baidu_main_handle) # 爲方便調試,將句柄打印到控制檯
time.sleep(5) # 等待5秒
chrome_driver.find_element_by_link_text("登錄").click() # 點擊登錄按鈕
time.sleep(5) # 等待5秒
chrome_driver.find_element_by_link_text("立即註冊").click() # 在彈出窗口中點擊立即註冊
all_handles = chrome_driver.window_handles # 獲取所有句柄
print(all_handles) # 打印所有句柄到控制檯
for handle in all_handles: # 在所有句柄中進行循環
try:
if handle != baidu_main_handle: # 判斷是否句柄不等於百度首頁的句柄,如不等於
chrome_driver.switch_to.window(handle) # 則切換句柄
print("進入新窗口....")
chrome_driver.switch_to.window(baidu_main_handle) #再切換回百度首頁句柄
chrome_driver.refresh() # 刷新頁面
# 輸入檢索內容到輸入框
chrome_driver.find_element_by_id("kw").send_keys("__davieyang__")
time.sleep(5)
# 點擊百度一下按鈕
chrome_driver.find_element_by_id("su").click()
time.sleep(5)
except Exception as e:
raise e
chrome_driver.quit() # 關閉瀏覽器