Selenium是一个Web应用的自动化框架。html
经过它,咱们能够写出自动化程序,像人同样在浏览器里操做web界面。 好比点击界面按钮,在文本框中输入文字 等操做。java
并且还能从web界面获取信息。 好比获取12306票务信息,招聘网站职位信息,财经网站股票价格信息 等等,而后用程序进行分析处理。python
Selenium 的自动化原理是这样的:web
咱们写的自动化程序须要使用客户端库。chrome
咱们程序的自动化请求都是经过这个库里面的编程接口发送给浏览器。编程
好比,咱们要模拟用户点击界面按钮, 自动化程序里面就应该调用客户端库相应的函数,就会发送点击元素的请求给下方的浏览器驱动。而后,浏览器驱动再转发这个请求给浏览器。api
这个自动化程序发送给浏览器驱动的请求是HTTP请求。浏览器
客户端库从哪里来的?是Selenium组织提供的。ruby
Selenium组织提供了多种 编程语言的Selenium客户端库,包括 java,python,js,ruby等,方便不一样编程语言的开发者使用。框架
咱们只须要安装好客户端库,调用这些库,就能够发出自动化请求给浏览器咯。
浏览器驱动也是一个独立的程序,是由浏览器厂商提供的,不一样的浏览器须要不一样的浏览器驱动。 好比Chrome浏览器和火狐浏览器有各自不一样的驱动程序。
浏览器驱动接收到咱们的自动化程序发送的界面操做请求后,会转发请求给浏览器,让浏览器去执行对应的自动化操做。
浏览器执行完操做后,会将自动化的结果返回给浏览器驱动,浏览器驱动再经过HTTP响应的消息返回给咱们的自动化程序的客户端库。
自动化程序的客户端库接收到响应后,将结果转化为数据对象返回给咱们的代码。
咱们的程序就能够知道此次自动化操做的结果如何了。
Selenium环境的安装主要就是安装两样东西:客户端库和浏览器驱动。
不一样的编程语言选择不一样的Selenium客户端库。
对应咱们Python语言来讲,Selenium客户端库的安装很是简单,用pip命令便可。
打开命令行程序,运行以下命令
pip install selenium
浏览器驱动是和浏览器对应的。不一样的浏览器须要选择不一样的浏览器驱动。
目前主流的浏览器中,Chrome 浏览器对Selenium自动化的支持更加成熟一些。
咱们就以Chrome浏览器为例。
建议安装最新版本的Chrome浏览器,点击这里下载
访问Chrome浏览器的驱动下载页面,点击这里下载
注意浏览器驱动必需要和浏览器版本匹配,下图红圈里面的版本号就是和浏览器版本号对应的 。
好比:当前Chrome浏览器版本是78, 就须要下载78开头的目录里面的驱动程序 。
打开目录,里面有3个zip包,分别对应Linux、Mac、Windows平台。
若是咱们是Windows平台的电脑,就下载 chromedriver_win32.zip
这是个zip包,下载下来以后,解压里面的程序文件 chromedriver.exe 到某个目录下面,注意这个目录的路径最好是没有中文名和空格的。
好比,解压到E:\webdrivers目录下面。
也就是保证咱们的Chrome浏览器驱动路径为E:\webdrivers\chromedriver.exe
基于selenium的web自动化环境搭建就是这些,比较简单。
from selenium import webdriver # 建立 WebDriver 对象,指明使用chrome浏览器驱动 wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe') # 调用WebDriver 对象的get方法 可让浏览器打开指定网址 wd.get('https://www.baidu.com')
注意,等号右边返回的是WebDriver类型的对象,咱们能够经过这个对象来操控浏览器,好比打开网址、选择界面元素等。
而下面这行代码,就是使用WebDriver的get方法打开网址百度
wd.get('https://www.baidu.com')
执行上面这行代码时,自动化程序就发起了打开百度网址的请求消息,经过浏览器驱动,给Chrome浏览器。
Chome浏览器接收到该请求后,就会打开百度网址,经过浏览器驱动,告诉自动化程序打开成功。
执行完自动化代码,若是想关闭浏览器窗口能够调用WebDriver对象的 quit 方法,像这样 wd.quit() 。
前面,咱们的代码建立 WebDriver对象时,须要指定浏览器驱动路径,好比
wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
若是,咱们把浏览器驱动所在目录加入环境变量 Path,再写代码时,就能够无需指定浏览器驱动路径了,像下面这样。
wd = webdriver.Chrome()
由于,Selenium会自动在环境变量Path指定的那些目录里查找名为chromedriver.exe的文件。
必定要注意的是, 加入环境变量 Path 的,不是浏览器驱动全路径,好比E:\webdrivers\chromedriver.exe
而是浏览器驱动所在目录,好比E:\webdrivers\