Python+Selenium實(shí)現(xiàn)瀏覽器標(biāo)簽頁(yè)的切換
在實(shí)際工作中,我們經(jīng)常會(huì)遇到頁(yè)面切換的情況。就比如當(dāng)點(diǎn)擊了某個(gè)功能的按鈕后,瀏覽器出現(xiàn)了新的標(biāo)簽頁(yè),需要在這些標(biāo)簽頁(yè)之間進(jìn)行切換。要如何通過(guò) selenium 來(lái)實(shí)現(xiàn)這樣的場(chǎng)景呢?這就是我們今天要學(xué)習(xí)的內(nèi)容。
selenium 實(shí)現(xiàn)瀏覽器標(biāo)簽頁(yè)句柄的切換
瀏覽器標(biāo)簽頁(yè)本地文件準(zhǔn)備
這一段純粹是因?yàn)閮?nèi)容太少,拿來(lái)湊字?jǐn)?shù)的...
同樣的,這里所使用的是我們本地的 multi.html 文件,點(diǎn)擊該文件的 “register”,會(huì)跳轉(zhuǎn)至 “www.baidu.com” 。
“multi.html” 文件的前端代碼如下:
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Form</title> <script type="text/javascript" async="" src="jquery.min.js"></script> <link href="bootstrap-combined.min.css" rel="external nofollow" rel="stylesheet" /> <script src="bootstrap.min.js"></script> </head> <body> <h3>simple login form</h3> <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="inputEmail">Email</label> <div class="controls"> <input type="text" id="inputEmail" placeholder="Email" name="email"> </div> </div> <div class="control-group"> <label class="control-label" for="inputPassword">Password</label> <div class="controls"> <input type="password" id="inputPassword" placeholder="Password" name="password"> </div> </div> <div class="control-group"> <div class="controls"> <label class="checkbox"> <input type="checkbox"> Remember me </label> <button type="submit" class="btn">Sign in</button> <a rel="external nofollow" target="_blank">register</a> </div> </div> </form> </body> </html>
利用 selenium 實(shí)現(xiàn)瀏覽器頁(yè)面的切換
獲取瀏覽器標(biāo)簽頁(yè)句柄方法如下:
current_window_handle
獲取當(dāng)前標(biāo)簽頁(yè)的句柄
window_handles 獲取所有標(biāo)簽頁(yè)的句柄
代碼示例如下:
# coding:utf-8 from time import sleep from selenium import webdriver driver = webdriver.Chrome() # 啟動(dòng) Chrome瀏覽器的 driver driver.maximize_window() # Chrome 瀏覽器最大化 driver.get('file:///Users/workspace/WEB_TEST_HTML/multi.html') # 打開(kāi)本地的 "multi.html" 文件 sleep(1) first_window = driver.current_window_handle # 通過(guò) current_window_handle 屬性獲取當(dāng)前標(biāo)簽頁(yè)的句柄 driver.find_element_by_link_text('register').click() # 通過(guò) link_text 方法定位到 "register" 元素,執(zhí)行點(diǎn)擊操作(跳轉(zhuǎn)百度) sleep(2) all_windows = driver.window_handles # 通過(guò) window_handles 屬性獲取當(dāng)前所有標(biāo)簽頁(yè)的句柄 for handle in all_windows: # for 循環(huán)判斷當(dāng)前句柄是否是 first_window 句柄,如果不是則跳轉(zhuǎn)至該句柄(該句柄為百度頁(yè)面的句柄) if handle != first_window: driver.switch_to.window(handle) print("已跳轉(zhuǎn)至 '百度' 標(biāo)簽頁(yè)的句柄") sleep(1) driver.find_element_by_id('kw').send_keys('渴望力量的哈士奇') # 在百度句柄頁(yè)面的搜索框輸入要百度的內(nèi)容 "渴望力量的哈士奇" sleep(1) driver.find_element_by_id('su').click() # 點(diǎn)擊 "百度一下" 按鈕 sleep(2) driver.switch_to.window(first_window) # 跳轉(zhuǎn)至 "multi.html" 頁(yè)面的句柄 email_element = driver.find_element_by_xpath('//*[@id="inputEmail"]') # 通過(guò) xpath 定位 Email 輸入框。 email_element.send_keys('username') # Email 輸入框輸入 "username" sleep(1) email_element.clear() # 清除 Email 輸入框內(nèi)容 sleep(1) email_element.send_keys('admin') # Email 輸入框輸入 "admin" driver.find_element_by_xpath('//*[@id="inputPassword"]').send_keys('123456') # Password 輸入框輸入 "123456" sleep(1) driver.find_element_by_xpath('/html/body/form/div[3]/div/button').click() sleep(1) driver.quit()
運(yùn)行結(jié)果如下:
到此這篇關(guān)于Python+Selenium實(shí)現(xiàn)瀏覽器標(biāo)簽頁(yè)的切換的文章就介紹到這了,更多相關(guān)Python Selenium瀏覽器標(biāo)簽頁(yè)切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python中的selenium安裝的步驟(瀏覽器自動(dòng)化測(cè)試框架)
- selenium+python自動(dòng)化測(cè)試之使用webdriver操作瀏覽器的方法
- python selenium 對(duì)瀏覽器標(biāo)簽頁(yè)進(jìn)行關(guān)閉和切換的方法
- Python+selenium 獲取瀏覽器窗口坐標(biāo)、句柄的方法
- 淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為
- python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法
- python用selenium打開(kāi)chrome瀏覽器保持登錄方式
- 詳解Python多線程Selenium跨瀏覽器測(cè)試
- 如何在Python中引入和使用瀏覽器驅(qū)動(dòng)
相關(guān)文章
python3實(shí)現(xiàn)將json對(duì)象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出
這篇文章主要介紹了python3實(shí)現(xiàn)將json對(duì)象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07你們要的Python繪畫(huà)3D太陽(yáng)系詳細(xì)代碼
這篇文章主要給大家介紹了關(guān)于如何利用Python 繪畫(huà)3D太陽(yáng)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-10-10django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼
這篇文章主要介紹了django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Python處理和解析CLIXML數(shù)據(jù)的方法
在使用Windows的Windows Remote Management (WinRM)服務(wù)與PowerShell交互時(shí),經(jīng)常會(huì)遇到CLIXML(即CLI XML)格式的數(shù)據(jù),本文將介紹如何在Python中處理和解析CLIXML數(shù)據(jù),并提供一種方法來(lái)從數(shù)據(jù)中提取有效信息,需要的朋友可以參考下2024-04-04python中pathlib 面向?qū)ο蟮奈募到y(tǒng)路徑
文章介紹了Python 3.4+內(nèi)置的標(biāo)準(zhǔn)庫(kù)pathlib,該庫(kù)提供面向?qū)ο蟮奈募到y(tǒng)路徑處理,通過(guò)pathlib,可以更方便地進(jìn)行路徑操作,感興趣的朋友一起看看吧2024-12-12Python使用Tkinter實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)器的步驟詳解
這篇文章主要介紹了Python使用Tkinter實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)器,,本文分場(chǎng)景通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01Tensorflow:轉(zhuǎn)置函數(shù) transpose的使用詳解
今天小編就為大家分享一篇Tensorflow:轉(zhuǎn)置函數(shù) transpose的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02