写点什么

Selenium 操作已经打开的浏览器

作者:IT蜗壳-Tango
  • 2023-04-27
    江苏
  • 本文字数:746 字

    阅读完需:约 2 分钟

背景

伴随着 IE 的结束,之前很多用在 IE 上面的自动化(例如获取当前打开页面,并进行相关操作)都已经不能再继续使用。

现在需要切换到谷歌浏览器或者 Edge。

实现思路

IE 时代,我们可以通过 WIN32 的句柄来获取已经打开的页面,那么在 Chrome 上,是否也可以呢?WIN32 基本上很难,如果谁会,欢迎在评论区留言学习一下。因此我们考虑使用 Selenium 接管已经打开的页面。

如果要实现这一操作,我们就要用到它的 debug 模式。


右键 Chrome 浏览器,在属性里面加入如下内容

--remote-debugging-port=9222
复制代码


我们可以通过http://localhost:9222/json这个地址来验证配置是否成功

正常情况下应该可以看到如下内容

这里显示的内容,和你打开的网页有关,总体就是一个 JSON 数据。

Python 代码示例

我们以https://www.eki-net.com/这个网址作为演示,我们会在选择车票的页面进行接管,并将"自由席"的结果展开。

我们通过 Chrome 的开发者工具可以确认到"開く"按钮的 ID 为"selService_formTrainSeatSelHeaderBtn_0_3"


from selenium import webdriver
from selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.options import Options chrome_options = Options()chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")chrome_driver =r"D:\Code\Demo\src\chromedriver.exe"driver = webdriver.Chrome(chrome_driver, options=chrome_options)print(driver.title)driver.find_element(By.ID,"selService_formTrainSeatSelHeaderBtn_0_3").click()
复制代码


这里需要注意的是,我们最好将"关闭 Google Chrome 后继续运行后台应用"关闭掉,因为有点时候会导致端口被占用的情况。

设置--> 高级-->系统


如果这篇文章对你有所帮助,欢迎转发给有需要的朋友。

我是 Tango,一个热于分享实用技术的程序猿,我们下期见。

发布于: 刚刚阅读数: 2
用户头像

一个日语专业的程序猿。 2017-09-10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
Selenium操作已经打开的浏览器_三周年连更_IT蜗壳-Tango_InfoQ写作社区