Selenium中的驱动是浏览器自动化的一个重要组成部分。Python或其他编程语言中的Selenium库使用特定的浏览器驱动程序来控制浏览器的动作,为其添加功能,并在其中操作数据(网页)。
与最常见的声明浏览器驱动程序的方式相反,这是最常见的,但往往可能导致不兼容的问题。在你的Python代码中,有多种方法(不那么常见)来安装、初始化web驱动。
下载驱动程序
Selenium中最重要的错误点发生在浏览器的驱动版本与浏览器的版本不匹配时,这时就会出现兼容性问题。因此,首先,您必须使用与您打算用于自动化的网络浏览器(Google Chrome、Mozilla Firefox、Apple Safari或任何其他)相同版本的驱动程序。
下载和安装网络驱动程序是完全安全的,因为这些驱动程序由官方浏览器公司维护并相应更新,用于测试和自动化他们的浏览器和网页的目的。
请检查您打算用于自动化的浏览器的版本,并从以下参考资料中下载相应的驱动程序。
| 网络浏览器 | 驱动程序下载参考 |
|---|---|
| 谷歌浏览器/Chromium | 下载 |
| 火狐浏览器 | 下载 |
| 微软Edge | 下载 |
| 苹果Safari浏览器 | 已经内置 |
驱动程序下载链接
使用驱动程序的方法
现在让我们来看看如何使用selenium web驱动。
1.输入直接位置
- 在Python Selenium代码中使用网络驱动的最流行的方法是用于浏览器自动化。它受欢迎的原因是它使用的直接方法,在脚本中定义一个驱动。
- 这种方法需要手动下载网络驱动。
优点是:不需要关心冗长的设置或弄清环境变量
缺点:使得代码的灵活性降低,每次更新都需要手动修改。
driver = webdriver.Chrome('path/to/chromedriver")
driver = webdriver.Chrome('C://software/chromedriver.exe') #driver located at the specified location
driver = webdriver.Chrome('chromedriver.exe') #driver located in the same directory as of the python script file
#other way
service = Service(executable_path="/path/to/chromedriver")
driver = webdriver.Chrome(service=service)
2.环境变量
- 如果你已经尝试过上述方法,那么你可能已经注意到,在你的计算机的某个目录中注意/记住你所安装的网络驱动程序的位置是多么的累人。
- 为了解决这个问题,我们在环境变量中定义驱动程序的位置或路径,一劳永逸。定义成功后,我们不需要在代码中指定路径位置,我们可以毫不费力地进行编码。
- 这种方法也需要手动安装驱动程序,你可能已经知道这种方法是用来解决路径变量的问题的。
优势:没有指定驱动程序路径的麻烦
缺点:没有更新功能
要设置环境路径变量,请到你的命令提示符下输入以下命令:在下面的命令中代替 "C:\WebDriver\bin",使用驱动程序的路径(安装位置)。
setx PATH "%PATH%;C:\WebDriver\bin"
如果你觉得这种方式很困难,那么你可以在Windows开始菜单中搜索环境变量,然后点击打开-"编辑系统环境变量"。之后,从弹出的窗口中选择 "环境变量",打开另一个弹出窗口。
从 "系统变量"选项中,选择 "打开路径 ",现在点击 "新建 ",引入一个新的路径变量。在其中粘贴你的网络驱动的位置,然后在所有窗口中确定、确定,最后再确定。
3.驱动程序管理器
最后一个也可能是最有用的方法是在你的Python代码中使用Web驱动。在选择网络浏览器的自动更新时,设备只更新浏览器而不更新已安装的驱动程序,在这种情况下,当执行Python脚本时,代码会因为浏览器和驱动程序的版本不相等而出现错误。
优势:没有版本兼容性问题,有助于在多个浏览器之间轻松切换
缺点:对于初学者来说,可能有点难以设置。
安装驱动管理器
pip install webdriver-manager
导入管理器
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager # --> for Chrome
#from webdriver_manager.firefox import GeckoDriverManager # --> for Firefox
现在我们已经安装并导入了管理器,我们在代码中使用它,就像----
使用 install()方法来获取管理器使用的位置,并将其传递给loc_service类。这个方法本身就能告知已安装的网络驱动的位置。
driver = webdriver.Chrome(ChromeDriverManager().install()) # --> for Chrome
#driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) #--> for Firefox
总结
本教程到此结束。与在Selenium中使用网络驱动的流行方法相反,在本教程中,你了解到了其他可能有利的方法来执行同样的任务。