Python+Selenium实现浏览器标签页的切换

 更新时间:2022年06月09日 08:47:45   作者:渴望力量的哈士奇  
在实际工作中,我们经常会遇到页面切换的情况。就比如当点击了某个功能的按钮后,浏览器出现了新的标签页,需要在这些标签页之间进行切换。本文将利用Selenium实现这一功能,需要的可以参考一下

在实际工作中,我们经常会遇到页面切换的情况。就比如当点击了某个功能的按钮后,浏览器出现了新的标签页,需要在这些标签页之间进行切换。要如何通过 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="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 href="https://www.baidu.com" rel="external nofollow"  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()

运行结果如下:

到此这篇关于Python+Selenium实现浏览器标签页的切换的文章就介绍到这了,更多相关Python Selenium浏览器标签页切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用urllib2获取网络资源实例讲解

    Python使用urllib2获取网络资源实例讲解

    urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。他以urlopen函数的形式提供了一个非常简单的接口,下面我们用实例讲解他的使用方法
    2013-12-12
  • Python中将变量按行写入txt文本中的方法

    Python中将变量按行写入txt文本中的方法

    下面小编就为大家分享一篇Python中将变量按行写入txt文本中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python logging设置和logger解析

    Python logging设置和logger解析

    这篇文章主要介绍了Python logging设置和logger解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于python实现计算且附带进度条代码实例

    基于python实现计算且附带进度条代码实例

    这篇文章主要介绍了基于python实现计算且附带进度条代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python Tkinter实例详解

    python Tkinter实例详解

    tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学习GUl编程,这篇文章主要介绍了python Tkinter详解,需要的朋友可以参考下
    2023-03-03
  • 深入解析opencv骨架提取的算法步骤

    深入解析opencv骨架提取的算法步骤

    这篇文章主要介绍了深入解析opencv骨架提取的算法步骤
    2022-05-05
  • python使用OpenCV实现多目标跟踪

    python使用OpenCV实现多目标跟踪

    这篇文章主要介绍了python使用OpenCV实现多目标跟踪,如何在OpenCV中使用MultiTracker类实现多目标跟踪API。在深入了解详细信息之前,请查看下面列出的关于目标跟踪的帖子,以了解在OpenCV中实现的单个目标跟踪器的基础知识,需要的朋友可以参考一下
    2022-04-04
  • 使用Python将PDF转换为文档的方法实现

    使用Python将PDF转换为文档的方法实现

    要将PDF文件转换为Doc格式,你可以使用 Python 模块,它将让你轻松地将 pdf 转换为 doc ,在本文中,我们将探索使用 Python 将 PDF 文档转换为Doc文件,需要的朋友可以参考下
    2023-09-09
  • Pickle模块中的dump()和load()方法简介

    Pickle模块中的dump()和load()方法简介

    Pickle模块实现了基本的数据序列化与反序列化操作,通过序列化操作,我们可以将程序中运行的对象信息转化为字节流保存到文件中去,永久存储在磁盘上,这篇文章主要介绍了Pickle模块中的dump()和load()方法介绍,需要的朋友可以参考下
    2023-03-03
  • PyTorch使用tensorboard的SummaryWriter报错问题解决方案

    PyTorch使用tensorboard的SummaryWriter报错问题解决方案

    PyTorch使用tensorboard可以显示网络运行情况,但偶尔使用SummaryWriter时遇到Segmentation fault错误,这篇文章主要介绍了PyTorch使用tensorboard的SummaryWriter报错问题解决方案,需要的朋友可以参考下
    2024-06-06

最新评论