Selenium自動化測試實現(xiàn)窗口切換
在Web自動化測試過程中,有時單擊某個鏈接會彈出新的窗口,這時就需要切換到新打開的窗口中進(jìn)行操作。WebDriver 提供的switch_to.window()方法可以實現(xiàn)在不同的窗口之間進(jìn)行切換。
主要用到的相關(guān)方法:
- current_window_handle:獲得當(dāng)前窗口句柄。
- window_handles:返回所有窗口的句柄到當(dāng)前會話。
- switch_to.window():切換到相應(yīng)的窗口
下面以百度首頁和賬號注冊頁為例,演示在兩個窗口之間的切換
import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("https://www.baidu.com") search_windows = driver.current_window_handle driver.find_element(By.LINK_TEXT,'登錄').click() driver.find_element(By.LINK_TEXT,'立即注冊').click() all_handles = driver.window_handles for handle in all_handles: ? ? if handle != search_windows: ? ? ? ? driver.switch_to.window(handle) ? ? ? ? print(driver.title) ? ? ? ? driver.find_element(By.NAME,'userName').send_keys('userName') ? ? ? ? driver.find_element(By.NAME,'phone').send_keys('138xxxxxxx') ? ? ? ? time.sleep(2) ? ? ? ? driver.close() driver.switch_to.window(search_windows) print(driver.title) driver.quit()
解析:程序開始后,首先打開百度首頁,然后通過current_window_handle獲取了當(dāng)前窗口句柄,接著打開登錄彈窗,點擊注冊按鈕從而打開新窗口;再通過window_handles 獲得當(dāng)前所有窗口句柄,接著遍歷所有窗口句柄,如果不等于百度首頁的窗口句柄,那就是注冊頁的窗口句柄,因為只打開了兩個窗口,然后再通過switch_to.window()切換到注冊頁窗口。
到此這篇關(guān)于Selenium自動化測試實現(xiàn)窗口切換的文章就介紹到這了,更多相關(guān)Selenium 窗口切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
開源軟件包和環(huán)境管理系統(tǒng)Anaconda的安裝使用
Anaconda是一個用于科學(xué)計算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。2017-09-09網(wǎng)易有道2017內(nèi)推編程題 洗牌(python)
這篇文章主要為大家詳細(xì)介紹了網(wǎng)易有道2017內(nèi)推編程題:洗牌,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06批量將ppt轉(zhuǎn)換為pdf的Python代碼 只要27行!
這篇文章主要為大家詳細(xì)介紹了批量將ppt轉(zhuǎn)換為pdf的Python代碼,只要27行,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02聊聊prod()與cumprod()區(qū)別cumsum()
這篇文章主要介紹了prod()與cumprod()區(qū)別cumsum(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05windows下python使用ffmpeg實現(xiàn)rtsp推流
這篇文章主要為大家詳細(xì)介紹了在windows環(huán)境下python如何使用ffmpeg實現(xiàn)rtsp推流,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解一下2023-09-09