最近正值毕业季,我之前不是写了个问卷星代码嘛,昨晚上有人凌晨1点加我,问我相关内容。
由于我之前C盘重装了一下,导致我很多东西空有其表,实际不能用,借此机会,向大家编写ChromeDriver配置,这是实现selenium自动化的第一步。
很多人觉得这一步很麻烦,其实也还好。
首先就是chromedriver和chrome版本是对应的,你不能跨版本安装,否则就会提示版本不适配,报错。
具体步骤可以看目录,也就是查看chrome版本->资源获取->复制到chrome路径下->复制到python解释器路径下
查看chrome版本
chrome版本点击设置->关于chrome
但是我这里就出现了一个问题,我这里显示117版本的,但是我代码测试的时候,发现不匹配,说我chrome版本是122版本的,因此我就只能按要求安装122版本的。
资源获取
这是官网:ChromeDriver - WebDriver for Chrome - Downloads (chromium.org)
注意看红色标注的,说明这个网站只能看到115版本以下的,不能看115版本已经更新的版本,需要跳转到另一个网站,而那个网站很多人进不去的。 而且很多人的chrome版本已经是115甚至更新,所以这个网站上的内容相当于废了。大家可以关注一下公众号:认知up吧,回复driver获取我为大家准备好的chromedriver版本。资源如下图
里面不只有win64的,其他系统的也有。
言归正传,你解压后,文件夹中内容如下,我们其实只需要chromedriver.exe即可。
复制到chrome路径下
首先就是在chrome图标,鼠标右键->打开文件所在的位置
然后就进入chrome的路径,
我电脑上的路径如下:G:\Program Files\Google\Chrome\Application
然后只需要将我们复制的chromedriver.exe粘贴到这个目录下即可。
复制到python解释器路径下
接下来就是找到你的python解释器路径,也就是找python.exe的位置
比如我电脑上安装了python3.7.0和python3.8.2,我就在每个里面都粘贴了一次。
只有一个python的话,只需要粘贴一次就好了。
一般来说,安装python的时候,网上教程都让你勾选上添加到环境变量里,所以到这里应该就结束了,我的教学也是到这里就结束了。
需要安装selenium的,可以在终端输入以下命令。
pip install selenium==4.1.1
否则安装版本过高可能会提示以下报错
Exception managing chrome: error sending request for url (https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json): error trying to connect: 远程主机强迫关闭了一个现有的连接。 (os error 10054)
即 Exception managing chrome: error sending request for url (https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json): error trying to connect: 远程主机强迫关闭了一个现有的连接。 (os error 10054)
上面内容都搞好了后,可以进行简单的测试。
简单的测试
这个就是最简单的代码测试,里面没有隐藏
from selenium import webdriver
# Chrome浏览器
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
因此就会出现chrome正受到自动测试软件的控制的文字。
经过伪装,其实用性大大加强,不会出现chrome正受到自动测试软件的控制的文字。
from selenium import webdriveroption = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=option)
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
url = "https://www.baidu.com"
driver.get(url)