最近重新尝试了一下,之前写的博客内容。重新捋了一下思路。
目的就是,selenium在需要登录的网站面前,可能就显得有些乏力,因此是不是有一种东西,可以操作它打开我们之前打开过的网站,这样就不用登录了。
笔者重新试了一下,大家可以按照我的思路来。如果觉得文章内容太多的,可以从终极版本处看起。
初级版本
你找到桌面的chrome图标->右键,属性
我这目标写着:"C:\Program Files\Google\Chrome\Application\chrome.exe"(这里貌似122版本就没有双引号,不过没啥问题)
这里告诉大家一个内容,chrome默认就是安装在c盘的,大家也就尽量不要去更改它的位置。
我们需要在后面加上(--remote前面有个空格)
--remote-debugging-port=9527 --user-data-dir="D:\selenium\AutomationProfile"
也就是
--remote-debugging-port=9527 --user-data-dir="D:\selenium\AutomationProfile"
其中的9527为端口号,可以自己更改
--user-data-dir指定运行浏览器的运行数据,新建一个干净目录,不影响系统原来的数据(这里笔者也试过了,这个目录不需要你创建有具体目录,如果目录不存在,它会帮你创建的)
以前我是让你提前备份好书签栏,不过我这次发现,如果你按上面操作,右键,属性,然后把我刚刚加上去的内容全部删了,然后确认,打开浏览器后,会发现它又变成以前的情况,知道这点后,你就可以无缝切换了,你也可以把相关命令复制到备份中。
我就是把长命令写在备注上,以后直接复制就能进入这个里面,然后可以用selenium进行操作已经打开的chrome。
注意:只要你使用了
--remote-debugging-port=9527 --user-data-dir="D:\selenium\AutomationProfile"这个模式,你后续一切浏览器操作,他都会保存相应内容到刚刚写的文件中,包括插件。
终极版本
①首先就是之前说的chromedriver版本需要和浏览器适配,然后将chromedriver放到对应chrome相关路径下和python解释器(python.exe)所在的路径中,这是第一步。
②这点和上面的有很大区别,就是其实你只需要在目标后面加上 --remote-debugging-port=9527即可(注意remote前面有个空格),而不需要后面的内容。
--remote-debugging-port=9527
图片如下
解释如下:
- ① --remote-debugging-port=9527定义了远程debug的端口,而代码就是通过这个端口从而实现selenium的连接的,如果没有这个,相当于程序和chrome没有连接起来。自然就不能打开你原先已经打开过的浏览器了。
- ②我在后面测试的时候发现 --user-data-dir="D:\selenium\AutomationProfile"这段代码相当于重新开启一个没有数据的chrome,并将数据存到我设置的路径中(路径可以不存在,因为chrome会自动添加),也就是,不加后面这句话,使用的就是你原先的数据,这样浏览器中你以前的内容就保存了。使用原先的数据可以减少重新配置浏览器内容的工作。
而在代码中,你需要注意下面的端口号需要和上面 --remote-debugging-port=9527定义的端口号一致,127.0.0.1指的是本地机(IP这块我也不太熟)
因此,你保证输入端口一致后,就可以
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
driver = webdriver.Chrome(options=options)# 打印网页title
print(driver.title)
测试一下吧
目前我打开的浏览器是这样的(我安装了插件)
运行代码后,结果正确,
最后测试的时候,发现会有一点问题,见
终极版本的一点点问题https://blog.csdn.net/knighthood2001/article/details/136590453?spm=1001.2014.3001.5501因此大家最好还是把保存的路径加上,路径设置为一个空的文件夹就行。