简介
Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等多种浏览器,但是它驱动浏览器运行需要有专门的驱动程序。当驱动程序与浏览器的版本不匹配是就会报错。所以下载驱动一定要注意版本的匹配问题。
Selenium2.0和selenium3.0的到底选择哪个?
Selenium3.0 相较于selenium 2.0 API没有变化,主要增加了如下特性:
支持Mac OS,支持官方的Safaridriver
通过微软官方的webdriver server支持Edge浏览器
只支持IE 9.0版本以上
通过Mozilla官方的geckodriver来支持Firefox。
综上,selenium3.0支持的浏览器版本更多,所以建议选择selenium3.0
安装selenium
sudo pip install selenium
由截图可以看出,在Ubuntu 16.04.5 LTS上安装的是selenium 3版本。
下面查看我Ubuntu 16.04.5 LTS上安装的Chrome和Firefox的版本号,以便下面安装合适的驱动版本
如果想使用Chrome则需要安装驱动,可以在下面的网址下载
http://chromedriver.storage.googleapis.com/index.html
安装ChromeDriver
sudo apt-get install unzip
wget -N hhttp://chromedriver.storage.googleapis.com/71.0.3578.80/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
cp -f chromedriver /usr/bin/
chmod +x chromedriver
在运行过程中ChromeDriver会与Chrome浏览器不兼容,重新下载ChromeDriver地址,替换旧ChromeDriver即可。
安装Firefox对应的geckodriver
selenium3.x开始,webdriver/firefox/webdriver.py的init中,executable_path=”geckodriver”;
而2.x是executable_path=”wires”;
所以需要自己配置geckodriver;
下载地址:
https://github.com/mozilla/geckodriver/releases
下载后(根据系统版本选择):
wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar zxvf geckodriver-v0.23.0-linux64.tar.gz
解压出来,放到系统目录下面
cp -f geckodriver /usr/bin/
chmod +x geckodriver
测验验证
下面的代码基于python 2.7并以作验证。
#!/usr/bin/env python
#encoding: utf-8
#description: 测试是否可以正常驱动Chrome
#note: 需要安装Selenium3,chromedriver等才能正常驱动同版本的Chrome浏览器
#date: 2019-01-03
from selenium import webdriver
import time
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#在百度主页上搜索关键词Selenium
driver.find_element_by_id('kw').send_keys('Selenium3')
driver.find_element_by_id('su').click()
#此处休眠一下再关闭Chrome窗口退出
time.sleep(3)
driver.quit()
#开启火狐浏览器
browser = webdriver.Firefox()
browser.get('https://news.sohu.com')
time.sleep(3)
browser.quit()
在命令行运行
python selenium_demo.py
正常情况下,本脚本会先自动打开chrome浏览器,打开百度网页,输入关键词“kw”,并显示搜索结果,3秒后关闭chrome;然后再打开火狐浏览器,打开搜狐新闻主页,3秒后关闭。下面是看到的结果的截图:
遇到的问题
1.运行火狐时报如下错误
selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH.
解决方法:
见上面的方法,去http://docs.seleniumhq.org/download/下载geckodriver最新版,解压并复制到指定目录/usr/bin/下面。
参考文献
[1].https://www.jianshu.com/p/71bbe8acee01
[2].https://www.cnblogs.com/titicia/p/6036572.html
[3].https://blog.youkuaiyun.com/qq_41797451/article/details/80272748
[4].https://blog.youkuaiyun.com/qq471011042/article/details/79514908