目录
Python Selenium编写的自动化脚本会自动打开浏览器进行模拟人类点击、输入、选择等操作。但大多数据浏览器本身并不直接支持脚本操作,需要下载官方提供的驱动exe文件来完成自动化。本篇文章述说主流浏览器驱动的下载以及使用。
本文使用谷歌、火狐、Edge三种浏览器为案例讲解
浏览器驱动是自动化脚本与浏览器之间的媒介,驱动解析脚本在浏览器上运行。
驱动下载网址
Google:http://chromedriver.storage.googleapis.com/index.html
Firefox:https://liushilive.github.io/github_selenium_drivers/md/Firefox.html
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
在下载驱动时,需要先确认好电脑浏览器的版本。如果版本不对号,脚本运行时,浏览器将无法打开并且报错。
PS:一般是浏览器版本向前兼容,这句话理解:当浏览器版本没有与之对应的驱动版本时,下载最近前一个版本的驱动。
浏览器版本在==> 菜单--帮助--关于浏览器里可查看
谷歌浏览器
上图google浏览器版本为103.0.5060.114,在驱动版本中找103.0.5060.24即可
火狐浏览器
上图火狐浏览器版本10.0.4(64) 所以我们下0.30.0的驱动,支持V89.0+ win64
Edge浏览器
上图edge浏览器是104.0.1293.47版本,下载对应版本的驱动即可
新增一个py项目
在项目下新增一个webdemo目录
将三个驱动器都copy到webdemo目录下
新一个demo01.py文件 ,
在demo01.py输入下列代码
-
- from selenium import webdriver
- def get_web_drive(type):
- if 'chrome' == type:
- drive = webdriver.Chrome()
- elif 'firefox' == type:
- drive = webdriver.Firefox()
- elif 'edge' == type:
- drive = webdriver.Edge()
- return drive
-
- drive = get_web_drive('chrome')
- drive.get('https://www.csdn.net/')
-
- drive1 = get_web_drive('firefox')
- drive1.get('https://www.csdn.net/')
-
- drive2 = get_web_drive('edge')
- drive2.get('https://www.csdn.net/')
运行上面代码后,自动打开三个浏览器,从左至右,分别为谷歌、火狐、Edge
针对于自动化测试集群来说,每台机器浏览器版本不一样,驱动放在代码目录下面,将无法兼容浏览器版本。
此时我们可以将每台机器的浏览器驱动放到一个固定的目录下,比如:f:/aaa/ 目录下
这样做的好处:自动化测试脚本在不同的计算机里运行时,都不会出现驱动不兼容报错的问题。
PS:4.0版本以上的Selenium,浏览器初始化方法Chrome() 、Firefox()、Edge()等的executable_path驱动路径参数即将停止使用,由service对象代替,所以在代码里先要引入Service类,然后用驱动路径创建Sever对象,传入初始化浏览器方法里
举例:
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service
-
- s = Service('F:/aaa/chromedriver.exe') #初始化Service对象
- drive = webdriver.Chrome(service=s) #将Service对象传入浏览器初始化方法,启动浏览器
此时我们要将webdemo目录下的驱动清空,然后将demo01.py的代码更改为
- from selenium import webdriver
-
- from selenium.webdriver.chrome.service import Service
-
- def get_web_drive(type):
- if 'chrome' == type:
- s = Service('F:/aaa/chromedriver.exe')
- drive = webdriver.Chrome(service=s)
- elif 'firefox' == type:
- s = Service('F:/aaa/geckodriver.exe')
- drive = webdriver.Firefox(service=s)
- elif 'edge' == type:
- s = Service('F:/aaa/msedgedriver.exe')
- drive = webdriver.Edge(service=s)
-
- return drive
-
- drive = get_web_drive('chrome')
- drive.get('https://www.csdn.net/')
-
- drive1 = get_web_drive('firefox')
- drive1.get('https://www.csdn.net/')
-
- drive2 = get_web_drive('edge')
- drive2.get('https://www.csdn.net/')
运行代码,自动化打开三个浏览器,从左至右,分别为谷歌、火狐、Edge
Selenium4.0 主流浏览器那些事儿讲的差不多了,希望大家多多点赞