Selenium 一自动化测试工具。它支持 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。

所以呢,你要用Selenium你必须得先有个浏览器(大多数人没说这点,略坑!),无论是Chrome也好,Firefox也好,你必须得有一个。

安装完浏览器了,抱着愉快的心情用pip3安装了Selenium,在Pyhton交互模式中直接导入Webdriver,创建Webdriver对象报如下错误:

1
No such file or directory: 'geckodriver'

这上什么鬼?原来还需要安装浏览器的驱动文件。。。。。。。,下载页面如下,

1
https://github.com/SeleniumHQ/selenium/blob/master/py/docs/source/index.rst

记得要下载对应的驱动,Chrome不能用Firefox,Firefox也不能用Chrome的,如果驱动版本错了,会报无法执行的错误,如下

1 OSError: [Errno 8] Exec format error

为何不弄一个所有驱动在一起的?搞不明白。

将下载的驱动文件解压到/usr/bin,或/usr/local/bin下面,也就你的环境变量里在, 如何你直接修改PATH,我认为也是可以的,只要能找到就好了。

到这了,感觉应该可以了吧,不行的,创建对象是没问题了,但是一访问URL,又报错了。。。。。

1
geckodriver.log Error: GDK_BACKEND does not match available displays

从geckodriver.log中看到的报错信息,需要一个显示,本来想命令行用,但是却提示需要一个匹配的显示。经过去谷歌搜索得到,需要创建虚拟的显示器。

安装如下软件来创建:

yum install Xvfb libXfont xorg-x11-fonts*
pip3 install  pyvirtualdisplay

跳出这些坑,总算是可以正常使用了,测试代码如下:

复制代码
1 from selenium import webdriver  
2 from pyvirtualdisplay import Display  
3   
4   
5 display = Display(visible=0, size=(800,600))  
6 display.start()  
7 driver = webdriver.Firefox()  
8 driver.get("http://www.baidu.com")  
9 print driver.page_source  
复制代码

 

selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities

升级火狐浏览器与selenlum版本一致