Mac上selenium安装教程+报错解决

前言

最近在学习自动化测试,故重新捡起之前爬虫时候的selenium。本来以为正常pip就可以完事,却在安装的路上踩了许多坑,也参考了一些资料,并对其中的一些内容做一些更新。

Selenium安装过程

软硬件配置

系统:macOS Ventura

Python:3.8.5

selenium:4.5.0

直接在terminal中使用pip安装

1
pip install selenium

安装后打开pycharm美美写了一个test.py来测试selenium是否安装成功,第一步导入库的时候并没有报错,心里雀跃欢呼,此时已认为“如此简单之事,不值一提,还有人写安装教程,简直是水博客”。

但在第三行代码时候我吃了瘪,开始有了以下内容的报错:

1
2
3
from selenium import webdriver

driver = webdriver.Chrome()

raise WebDriverException(selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://chromedriver.chromium.org/home

原来是selenium3之后都需要安装浏览器驱动,这时候我虽然觉得麻烦,但仍然是自信地点开网址去下载驱动了。

安装ChromeDriver

查看浏览器版本(本文以Chrome为例)

1
chrome://version/

查看浏览器的版本,再下载对应的驱动,不然下载下来后仍无法使用。

可以看到我的版本是107开头的,故点击后面的链接直接下载即可。

下载后解压,这时候我看的一个教程是建议放在应用程序的Chrome包下,然后在~/.bash_profile中export path。在我尝试了至少三遍后,我放弃了,因为这一步的内核其实只是将chromedriver的path导入而已,那在那个path都是可以的呀,只要这个path已经被export了。

于是我选择将解压后的 chromedriver 放在了/usr/local/bin下。

美美运行剩下的程序,终于跳出了浏览器。

然后下面程序第二行又停住了。

1
2
3
4
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
# driver.quit()

开始报错:

selenium ‘WebDriver‘ object has no attribute ‘find_element_by_id‘

继续发扬我有事没事搜索一下的优良传统,在该教程中找到了答案。

导入包:

1
2
from selenium.webdriver.common.by import By # 导入By
driver.find_element(By.属性,‘内容’) # 使用方法

最终美美跑出了第一个自动化的程序。

正确(修改后)的完整代码如下:

1
2
3
4
5
6
7
8
from selenium import webdriver
from selenium.webdriver.common.by import By # 导入By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element(By.ID, 'kw').send_keys('selenium')
driver.find_element(By.ID, 'su').click()
# driver.quit()
----------到结尾啦!! Hoohoo----------