万叶集 |
---|
🎉 隐约雷鸣,阴霾天空。 🎉 | 🎉 但盼风雨来,能留你在此。 🎉 |
前言: ? 作者简介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ? 🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
在实际工作中,我们经常会遇到页面切换的情况。就比如当点击了某个功能的按钮后,浏览器出现了新的标签页,需要在这些标签页之间进行切换。要如何通过 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" 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 href="https://www.baidu.com" target="_blank">register</a>
</div>
</div>
</form>
</body>
</html>
🐬 利用 selenium 实现浏览器页面的切换
获取浏览器标签页句柄方法如下:
current_window_handle 获取当前标签页的句柄- window_handles 获取所有标签页的句柄
代码示例如下:
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///Users/workspace/WEB_TEST_HTML/multi.html')
sleep(1)
first_window = driver.current_window_handle
driver.find_element_by_link_text('register').click()
sleep(2)
all_windows = driver.window_handles
for handle in all_windows:
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)
email_element = driver.find_element_by_xpath('//*[@id="inputEmail"]')
email_element.send_keys('username')
sleep(1)
email_element.clear()
sleep(1)
email_element.send_keys('admin')
driver.find_element_by_xpath('//*[@id="inputPassword"]').send_keys('123456')
sleep(1)
driver.find_element_by_xpath('/html/body/form/div[3]/div/button').click()
sleep(1)
driver.quit()
运行结果如下:
|