Selenium是一个用于Web应用程序测试的自动化测试工具。使用Selenium可以驱动浏览器执行特定的动作,如点击、下拉等操作,还可以获取页面信息,断言页面是否如预期。在工作中我们可以用它来做基于web浏览器的UI自动化测试,也可以用它来做一些固定的页面操作,减少我们重复的手动操作。
在使用selenium库时先使用pip命令下载
pip install selenium
selenium库安装完后还需要安装对应得了浏览器驱动,Selenium支持多种浏览器,如Chrome、Firefox等。本篇文章中就以Chrome举例说明。
python使用selenium自动化操作浏览器需要chromedriver
驱动,但是浏览器每隔一段时间就自动更新版本,或者换一台电脑运行是就会报错。出现驱动版本和浏览器版本不对应的错误信息,所以这里我们直接在代码中自动下载与当前浏览器版本匹配的驱动。代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import chromedriver_autoinstaller
import os
def func():
# 获取当前文件所在目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 设置存放chromedtriver驱动的目录
driver_path = os.path.join(current_dir, "driver")
os.makedirs(driver_path, exist_ok=True)
# 自动安装符合当前浏览器的驱动目录
chromedriver_autoinstaller.install(path=driver_path)
chromedriver_path = os.path.join(driver_path, chromedriver_autoinstaller.get_chrome_version())
# 创建一个对象传入chromedriver路径
service = Service(chromedriver_path)
# 启动浏览器时使用传入的驱动路径
driver = webdriver.Chrome(service=service)
func()
再上面的代码中我们直接使用脚本程序去下载我们浏览器对应匹配的chromedriver版本,就直接避免了浏览器升级后导致之前下载的驱动版本不对应的问题,避免重复下载这一步骤。
不过上面的代码可以优化,在下载前去做一个判断,因为每次运行前都会去重复下载一次,所以需要再运行前去找driver_path下面有没有文件,如果有的话就不用下载,直接使用已有的路径,如果没有再去下载就行了,这个就自行优化哈~~~
全部0条评论
快来发表一下你的评论吧 !