selenium还能这么玩:连接手动打开的浏览器

粉丝交流群已开放,不定期分享面试题和视频教程,点击文末公众号加群。

测试和爬虫对selenium并不会陌生,现有的教程已经非常多。但是因为 selenium 封装的方法比较底层,所以灵活性非常高,我们可以基于这种灵活性来实现非常丰富的定制功能。

这篇文章介绍一个操作,可以让 selenium 连接我们手动打开的浏览器。他的应用场景主要是:你可以通过手工先实现一些自动化难处理的操作,让 selenium 绕过这些复杂操作,然后再执行自动化。

自动化的时候经常头痛的扫码登录,可以通过这种方式绕过,短期无法解决的验证码的识别,也可以通过这种方式绕过。

手工打开浏览器

可能有的小伙伴不知道,打开浏览器有两种方式:图标点击和命令行运行。

图标点击不用多说,我们经常使用这种方式打开浏览器。命令行方式允许我啰嗦一句,找到浏览器的安装目录,在安装目录中输入 chrome.exe 就可以了。 比如我的 chrome 浏览器安装在 C:\Program Files (x86)\Google\Chrome\Application 这个路径,则在这个目录下打开 cmd 命令行,输入 chrome.exe,就可以打开一个浏览器。
在这里插入图片描述

浏览器配置参数

我们还可以在浏览器打开的时候设置额外的参数,为它提供不同的功能。 通过 selenium 连接浏览器,需要用到两个参数 --remote-debugging-port 和 --user-data-dir ,其他 chrome 参数如果感兴趣可以查看 peter.sh 的博客, 英语不好的可以看 中文版

  • --remote-debugging-port 这个参数允许我们通过远程的方式连接,selenium 当然也可以。
  • --user-data-dir 这个参数指定一个独立的目录存放产生的用户数据,在连接时也要设置,否则会失效。

现在我们可以通过以下命令行打开浏览器:

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenium\ChromeProfile"

打开后做两件事情:
1、在浏览器地址栏输入 http://localhost:9222/json/list ,可以查看到浏览器的一些信息。
2、打开本地的 C:\selenium\ChromeProfile 目录,会出现很多子文件。
在这里插入图片描述

快捷方式设置参数

手工打开用命令行比较用得少,界面照样可以配置参数。在 chrome 的快捷方式上右击,选择属性,快捷方式的目标栏后面加空格加上:

--remote-debugging-port=9222 --user-data-dir="C:\selenium\ChromeProfile"

在这里插入图片描述
现在,单击快捷方式打开的浏览器也可以通过远程调试了。

selenium 连接浏览器

有了远程调试地址,selenium 连接浏览器就变的很简单,只需要加 2 行代码。 创建一个选项,绑定debuggerAddress 远程调试地址。 此时就可以用 selenium 控制之前手工打开的浏览器了。

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)
print(driver.title)

效果:
在这里插入图片描述

  • 你已经阅读完本文所有内容。
  • 相信你一定是个耐心和踏实的人,也是一个可交的朋友。
  • 如果你有兴趣,可以复制 『 jiubing1 』或者点击下方名片加我为好友,一起学习和进步。
  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用selenium的`attach_to_edge()`方法来连接已经打开的Edge浏览器。具体步骤如下: 1. 首先需要导入selenium库: ```python from selenium import webdriver ``` 2. 打开Edge浏览器并获取其驱动程序: ```python driver = webdriver.Edge() ``` 3. 通过`session_id`和`executor_url`获取已经打开浏览器实例: ```python session_id = driver.session_id executor_url = driver.command_executor._url driver.close() # 关闭当前打开浏览器 ``` 4. 使用`attach_to_edge()`方法连接已经打开浏览器: ```python driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={}, options=options) driver.session_id = session_id ``` 其中,`options`是可选的,用于设置Edge浏览器的选项,例如设置启动时的页面大小、禁止加载图片等。 完整代码如下: ```python from selenium import webdriver # 打开Edge浏览器 driver = webdriver.Edge() # 获取session_id和executor_url session_id = driver.session_id executor_url = driver.command_executor._url # 关闭当前打开浏览器 driver.close() # 连接已经打开浏览器 options = webdriver.EdgeOptions() driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={}, options=options) driver.session_id = session_id # 以连接状态使用Edge浏览器进行操作 driver.get('https://www.baidu.com') ``` 注意:使用`selenium attach_to_edge()`方法连接已经打开浏览器时,浏览器版本与驱动程序版本必须匹配,否则可能会出现兼容性问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值