selenium常用操作之窗口切換


我們在做UI自動化時,不得不會遇到一些窗口跳轉與彈框,在這種的時候如果不進行切換的話,繼續執行腳本必然會報錯,所以我們就需要用到切換窗口的方法。

selenium中主要是三種窗口Windows窗口、iframe窗口、alert窗口,前面已經介紹過iframe和alert彈窗的切換,本節只介紹切換windows窗口。

這類窗口也就是我們常說的句柄,句柄的切換是有必要的,我們自己手動在網頁上從操作的話,產生新的句柄時瀏覽器會自動的幫我們跳轉到最新的句柄處,但是我們在做UI自動化的時候,代碼並不會幫我們自動的切換到最新的句柄,需要我們使用代碼去進行切換  

步驟:

1.獲取當前所有的窗口

windows=driver.window_handles

2.切換到指定的窗口

driver.switch_to.window(windows[-1])

3.切回原來的窗口

driver.switch_to.window(windows[0])

  

4.獲取當前窗口的句柄 

driver.current_window_handle

  

 示例代碼

復制代碼
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
handles=driver.window_handles driver.find_element(By.ID, "kw").send_keys("騰訊課堂") driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
復制代碼

以上的代碼腳本,就會產生一個新的Windows窗口

我們如果直接去執行下一步操作的話,會報錯的,所以我們需要先跳轉到新的窗口才行

需要加上以下代碼:

WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))#等待新窗口出現
windows = driver.window_handles   # 獲取該會話所有的句柄
driver.switch_to.window(windows[-1])  # 跳轉到最新的句柄

然后我們就可以在這個窗口里面進行新的操作了

 注意:等待條件new_window_is_opened(handles)中是根據當前句柄數的變化來判斷的,所以老的handles必須在窗口新增前就定義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM