【Selenium】控制当前已经打开的 chrome浏览器窗口(高级版)

这篇具有很好参考价值的文章主要介绍了【Selenium】控制当前已经打开的 chrome浏览器窗口(高级版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

利用 Selenium 获取已经打开的浏览器窗口,全python操作

标题 链接
【Selenium】控制当前已经打开的 chrome浏览器窗口 https://blog.csdn.net/weixin_45081575/article/details/112621581
【Selenium】控制当前已经打开的 chrome浏览器窗口(高级篇) https://blog.csdn.net/weixin_45081575/article/details/126389273

不同的是,本次全是用python来进行操作,省去了手动打开浏览器的操作,也相当于是节省了一点点功夫。与上一篇有异曲同工之妙。

这里使用 chrome浏览器 来做示例。

整个下来主要有两个步骤,

  1. 手动打开浏览器,
  2. 使用 Python程序 去获取到手动打开的 chrome浏览器

应用场景(理论上)

  1. 登录账号并且需要输入手机验证码的网站;
  2. 登录账号并且需要人机验证的网站(如图片点选、文字点选等人机验证;

1. 查看浏览器信息

在 chrome浏览器的地址栏中输入 chrome://version,如下图所示

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

C:\Program Files\Google\Chrome\Application\chrome.exe 这个是chrome 可执行路径。mark下来有用。

2. 代码释义

在cmd命令行窗口输入以下指令

  • start chrome:从命令行启动 chrome 应用程序
  • 释义:以调试模式打开浏览器,端口为9527,存放文件配置路径在F:\selenium(会自动创建)
start chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"

看以下动图
selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

3. Python执行cmd命令

在Python的内置库中,os 和 subprocess 可以执行cmd命令(还有其它的,暂不表)

下面来展示他们的用法。

os模块是Python 自带的一个操作系统接口模块,详见 OS模块介绍。

在这里主要用到它的 os.popen 命令,
selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

代码如下

  • 使用os.popen即可执行cmd命令~(os.popen包装了sunprocess.Popen方法)
import os
os.popen('start chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"')

看以下动图~
selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

以下代码都可以调用cmd命令,效果基本上是一致的。想选用哪个就先实践一番,再做决定吧~

os.popen

import os

# 方法一
os.popen(r'start chrome.exe --remote-debugging-port=9527 --user-data-dir="F:\selenium\"')

# 方法二
# 先切换到chrome的可执行文件路径,再执行cmd命令。注意这里没有 start
os.chdir(r"C:\Program Files\Google\Chrome\Application")
os.popen('chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"')

os.system

import os

# 方法一
os.system(r'start chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"')

# 方法二
# 先切换到chrome的可执行文件路径,再执行cmd命令。注意这里没有 start
os.chdir(r"C:\Program Files\Google\Chrome\Application")
os.system(r'chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"')

subprocess.Popen

import os
import subprocess

# 先切换到chrome可执行文件的路径
os.chdir(r"C:\Program Files\Google\Chrome\Application")
# 然后使用Popen执行cmd命令,这里的chrome.exe 可替换为 chrome,注意这里没有 start
subprocess.Popen('chrome.exe --remote-debugging-port=9527 --user-data-dir="F:\selenium"')

4. Selenium的一些基础

这里我们来看看,怎么通过Selenium去接管已经打开的 chrome。
这些都是基于 Chrome DevTools Protocol,感兴趣的可以深入去学习了解。


示例代码

from selenium import webdriver

if __name__ == '__main__':
    browser = webdriver.Chrome()
    browser.get('https://www.csdn.net/')
    # 获取远程链接的地址
    print('remote_url:', browser.caps['goog:chromeOptions']['debuggerAddress'])
    print('session_id:', browser.session_id)
    print(browser.title)

用调试模式执行以上代码,看到下图

  • {'debuggerAddress': 'localhost:64829'} ,,,这是关键所在,贯穿全文。

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

其中,需要关心的是 debuggerAddress 参数,将它填充到下面的Url

  • 注意填充的内容需要是你当前 Selenium 的 localhost:port,不是我这个!!!
填充前 填充后 作用(表达可能有误,但大体如此)
http://{localhost:port}/json http://localhost:64829/json 查看当前窗口的页面连接
http://{localhost:port}/json/version http://localhost:64829/json/version 查看窗口远程链接

远程调试

访问 http://localhost:64829/json/,如下图所示,

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python
*****
点击 devtoolsFrontendUrl(开发工具前端Url),可以到调试界面,这个可以用作于远程调试。暂不表~
selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python


获取远程链接

接下来使用浏览器访问该Url: http://localhost:64829/json/version ,如下图所示

  • 圈出来的webSocketDebuggerUrl(调试器Url),是远程链接的地址,若使用 puppeteer的话能用到

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

5. Python程序接管 已打开的浏览器

代码

  • 这里的端口号需要修改成与上面debuggerAddress一致

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 以下代码是使用 Python 接管已经打开的浏览器
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:64829")
browser = webdriver.Chrome(options=options)

browser.get('https://www.bilibili.com/')
print(browser.title)	# 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

代码运行后,可以看到如下:已经将 csdn 修改成 bilibili ,且访问成功了

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python
以上,只是为了说明***(其实不知道说明了什么)
下面将使用 Python去进行上述的全部操作,即控制已经打开的浏览器。

实例

譬如,我这里需要登录CSDN,然后再使用Selenium去接管chrome

代码如下:

  • 中间加入的 input 乃是精髓,直到你完成登录操作后,再去手动触发后面的程序 执行。
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

if __name__ == '__main__':
    os.system(r'start chrome --remote-debugging-port=9527 --user-data-dir="F:\selenium"')
	
	# 此乃精髓
    input('输入空格继续程序...')
	
    options = Options()
    options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
    browser = webdriver.Chrome(options=options)

    print(browser.title)
    print()

	# 这里是你的其它逻辑
	"""获取粉丝数量
	   获取所有新增文章
	   获取所有文章的观看数量
	"""

运行之后可以看到,
浏览器窗口请求了新的 URL(https://www.bilibili.com),并且获取到了当前页面的 title和运行其它逻辑(如果有的话~)

selenium 操作之前已打开的窗口,🎃🎃妙用Selenium,chrome,selenium,python

6. 总结

调用我的代码,直接运行即可控制当前浏览器窗口。


后话

自己动手操作一番,岂不美哉?
See you🎈🎈文章来源地址https://www.toymoban.com/news/detail-796818.html

到了这里,关于【Selenium】控制当前已经打开的 chrome浏览器窗口(高级版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口 (前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定远程调试

    2024年02月16日
    浏览(80)
  • selenium 不重复打开当前浏览器

    注意: 1. selenium最好使用3.141.0版本,其他版本会有问题:如方法名不一致,参数名不一致比较麻烦 2. 谷歌浏览器和驱动一定要对应并使用正版的

    2024年02月09日
    浏览(56)
  • 解决selenium打开Chrome浏览器自动退出的问题

    好不容易安装好selenium和对应的浏览器驱动器后终于可以运行程序了,结果发现一运行程序后浏览器打开就自动退出了,但是我在Python代码中并没有写driver.quit()方法,上网查了查发现原来是我的selenium版本是4.8.2的,selenium升级到版本4.7.2后,会出现这个浏览器自动退出的问题

    2024年02月11日
    浏览(77)
  • selenium 使用已打开的chrome浏览器(python版)

    使用selenium 的 webdriver 调试的时候,每次都是打开一个新的 chrome浏览器实例,特别不方便,那怎么使用上次打开的chrome浏览器实例呢,以下是完整代码,亲测可用 python版本:3.10 系统:win11 步骤1,先写一个打开 chrome浏览器 的文件1,里面指定这个chrome浏览器实例的端口号

    2024年02月14日
    浏览(59)
  • 使用selenium启动谷歌Chrome浏览器打开指定网站,页面空白,而使用其它浏览器手动打开该网站则正常

    在使用python实现自动化网络爬虫时,我使用到selenium来驱动谷歌Chrome浏览器来打开某一个网页,然后爬取数据,当使用Python中的selenium库驱动Chrome浏览器打开特定网站时,页面内容为空白,但在其他浏览器中手动访问该网站则显示正常。

    2024年02月07日
    浏览(77)
  • python使用selenium打开chrome浏览器时带用户登录信息

    导读 我们在使用 selenium 打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息。当我们想要爬取某个网站信息或者做某些操作的时候就需要自己再去模拟登陆 selenium操作浏览器 这里我们就以CSDN为例,来展示如何让selenium在打开

    2023年04月24日
    浏览(77)
  • 【已解决】使用selenium启动谷歌Chrome浏览器打开指定网站,页面空白,而使用其它浏览器手动打开该网站则正常

    1、在使用python实现自动化网络爬虫时,我使用到selenium来驱动谷歌Chrome浏览器来打开某一个网页,然后爬取数据,代码如下:    2、但是当执行到driver.get(url)访问网站时,页面是空白的,如下所示,没有正常显示该网站的数据    print输出的网页html也只有如下数据: htmlhea

    2024年02月12日
    浏览(73)
  • 【Selenium】解决chrome浏览器打开网站提示“您的连接不是私密连接”问题

    在使用selenium实现自动化访问测试环境地址时,由于测试环境没有正式的证书,导致访问站点的时候提示“您的连接不是私密连接” 解决方法一: 访问站点前设置浏览器访问参数 实际结果:没有生效,问题仍存在 解决方法二: 在出现提示时,直接在此页面上用键盘敲  th

    2024年02月16日
    浏览(75)
  • 使用Selenium控制Chrome浏览器 --工作自动化

    使用Selenium控制Chrome浏览器 --工作自动化 最近朋友在用秒账做帐时,由于销售单量很大,重复录入工作一天一录就近五个小时,寻求帮助,问能不能把这重复劳动减少些,看后分析,使用web自动化,应能解决问题,特此记录如下:  Selenium 简介:Selenium 是一套完整的web应用程

    2024年02月01日
    浏览(72)
  • 解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面

    在初始化浏览器的时候,添加以下配置即可: 使用如下程序初始化,可以避免很多问题: 在需要下载文件时,只需要直接 browser.get(网络文件URL) 即可直接下载文件到配置的 \\\"C:UsersUser4Downloads\\\" 路径下:

    2024年02月04日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包