測試過程中有時候會遇到點擊某個按鈕或者鏈接會彈出新的窗口,這時候我們的操作的頁面還保持着最初打開頁面,但是此時我們需要操作新打開的頁面上的功能,這個時候我們需要切換一下標簽頁 。
其實頁面的切換與frame的切換比較相識,一種切換時本頁面內frame的操作,而標簽頁面是多頁面的操作,道理很相似。下面講解下操作頁面標簽會涉及到那些方法。
- driver.current_window_handle #獲取當前窗口的句柄
- driver.window_handles #獲取所有窗口句柄
- driver.switch_to_window(windowName) #切換窗口的句柄
窗口的切換比較容易,所以我們通過代碼詳細了解下頁面如何切換
import time from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.maximize_window() driver.find_element_by_id('kw').send_keys(u'夢雨情殤') #搜索“夢雨情殤的博客” now_handle = driver.current_window_handle #獲取當前窗口的句柄 print(now_handle) #打印當前窗口的句柄 print(driver.title) #獲取打開頁面的標題 driver.find_element_by_id('su').click() time.sleep(2) driver.find_element_by_xpath('//*[@id="1"]/h3/a').click() #點擊第一條查詢的數據 all_handles = driver.window_handles #獲取到當前所有的句柄,所有的句柄存放在列表當中 print(all_handles) #打印句柄 '''獲取非最初打開頁面的句柄''' for handles in all_handles: if now_handle != handles: driver.switch_to_window(handles) print(driver.title) #獲取切換后的標題 time.sleep(3) driver.quit()
效果:
從例子中我們看到無論我們打開幾個頁面,但是默認的句柄依然保持在最初打開的頁面,如果想要操作后面的頁面的時候我們首先需要獲取到當前所有的打開頁面的句柄,然后在遍歷選擇你需要的句柄,打開標簽頁順序也就是列表存放的index順序,然后我們按照索引選擇,最后在切換到對應的頁面。最重要的是操作完成對應的頁面一定要切換回最初的標簽頁,然后通過最初的頁面進行切換,這邊避免最后自己也不知道在操作那個頁面,這個是自己的一點的經驗吧。