網站首頁 編程語言 正文
在實際工作中,我們經常會遇到頁面切換的情況。就比如當點擊了某個功能的按鈕后,瀏覽器出現了新的標簽頁,需要在這些標簽頁之間進行切換。要如何通過 selenium 來實現這樣的場景呢?這就是我們今天要學習的內容。
selenium 實現瀏覽器標簽頁句柄的切換
瀏覽器標簽頁本地文件準備
這一段純粹是因為內容太少,拿來湊字數的...
同樣的,這里所使用的是我們本地的 multi.html 文件,點擊該文件的 “register”,會跳轉至 “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" /> <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 target="_blank">register</a> </div> </div> </form> </body> </html>
利用 selenium 實現瀏覽器頁面的切換
獲取瀏覽器標簽頁句柄方法如下:
current_window_handle
?獲取當前標簽頁的句柄
window_handles 獲取所有標簽頁的句柄
代碼示例如下:
# coding:utf-8 from time import sleep from selenium import webdriver driver = webdriver.Chrome() # 啟動 Chrome瀏覽器的 driver driver.maximize_window() # Chrome 瀏覽器最大化 driver.get('file:///Users/workspace/WEB_TEST_HTML/multi.html') # 打開本地的 "multi.html" 文件 sleep(1) first_window = driver.current_window_handle # 通過 current_window_handle 屬性獲取當前標簽頁的句柄 driver.find_element_by_link_text('register').click() # 通過 link_text 方法定位到 "register" 元素,執行點擊操作(跳轉百度) sleep(2) all_windows = driver.window_handles # 通過 window_handles 屬性獲取當前所有標簽頁的句柄 for handle in all_windows: # for 循環判斷當前句柄是否是 first_window 句柄,如果不是則跳轉至該句柄(該句柄為百度頁面的句柄) if handle != first_window: driver.switch_to.window(handle) print("已跳轉至 '百度' 標簽頁的句柄") sleep(1) driver.find_element_by_id('kw').send_keys('渴望力量的哈士奇') # 在百度句柄頁面的搜索框輸入要百度的內容 "渴望力量的哈士奇" sleep(1) driver.find_element_by_id('su').click() # 點擊 "百度一下" 按鈕 sleep(2) driver.switch_to.window(first_window) # 跳轉至 "multi.html" 頁面的句柄 email_element = driver.find_element_by_xpath('//*[@id="inputEmail"]') # 通過 xpath 定位 Email 輸入框。 email_element.send_keys('username') # Email 輸入框輸入 "username" sleep(1) email_element.clear() # 清除 Email 輸入框內容 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()
運行結果如下:
原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/125194758
相關推薦
- 2022-10-22 Golang?中反射的應用實例詳解_Golang
- 2023-01-19 python圖形界面教程Tkinter詳解_python
- 2022-07-26 proteus仿真arduino中調用DHT11/22溫濕度傳感器
- 2022-09-21 Golang?channel為什么不會阻塞的原因詳解_Golang
- 2022-08-25 C語言超詳細講解線性表_C 語言
- 2022-08-01 GoLand利用plantuml生成UML類圖_Golang
- 2022-12-29 C#使用Lambda表達式簡化代碼的示例詳解_C#教程
- 2022-05-12 Android 截屏實現、屏幕截圖、MediaProjection、ImageReader
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支