之前用selenium 2.x + Firefox 38 +JDK 1.7做的一套UI自动化,之后许久未用,现在Firefox已经到55版本了,每次用总是下载旧的火狐浏览器,太麻烦了。同时也跟不上火狐浏览器的更新步伐。所以最近2天将selenium升级,以适应最新的火狐浏览器。
目标:Selenium 3.X +Firefox 55
1、先下载selenium-server-standalone,先去selenium官网看了一下现在selenium的版本,发现已经更新到3.5.3
个人觉得最新的版本的可能会有点小问题,保险起见决定下载selenium-server-standalone-3.5.0
2、下载好后,将jar包导入到项目中
3、selenium3.0以后对应的火狐版本。还需要下载geckodriver 插件,随便从小伙伴要了一个geckodriver.exe,将下载好的geckodriver.exe放到火狐安装目录中 C:\Program Files (x86)\Mozilla Firefox
4、准备启动项目,但是不知道为什么项目启动不了,问了度娘才知道,JDK必须是1.8以上。anyway,重新下载JDK。配置环境变量
我下载的JDK是1.8.0_131。
5、搞定JDK后,准备启动项目,心里还有点小激动呢!!!这么快就能升级完Selenium呢.。准备见证奇迹的时候到了,启动项目。
What???
参考以上源码,修改了之前的代码,怎么就报错了呢
6、好吧,接着问度娘。找啊找,竟然没有找到,我在selenium官网找到关于selenium中有一段描述,我摘下来了
The Selenium Server is needed in order to run Remote Selenium WebDriver. Selenium 3.X is no longer capable of running Selenium RC directly, rather it does it through emulation and the WebDriverBackedSelenium interface.
Selenium 3.X不在不能够直接运行Selenium RC,所以需要下载geckodriver。既然已经下载了,那是不是不能兼容呢?
在geckodriver 0.19.0中有这样一段描述
7、简单粗暴,下载了geckodriver 0.19.0,启动项目,可以打开火狐浏览器啦,胜利在望啊,不能输入连接。哎呦 我去 又报错
org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start.
Build info: version: '3.5.0', revision: '8def36e068', time: '2017-08-10T23:00:22.093Z'
System info: host: 'RLN0J1DAT01DX78', ip: '192.168.1.18', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_131'
Driver info: driver.version: FirefoxDriver
Emmmmmmm 我也看不懂这个是哪的问题了
看一下源码
System.setProperty("webdriver.firefox.marionette",
"C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe");
driver = new FirefoxDriver();
log.info("runDriver is ff......");
火狐浏览器默认安装在C盘,同时可以启动火狐浏览器,所以不需要加
System.setProperty("webdriver.firefox.bin", "火狐实际安装路径");
那就是启动geckodriver.exe的问题了。"webdriver.firefox.marionette"这个是什么鬼,修改成"webdriver.gecko.driver"。启动项目。正常运行。
果然不能随表参考别人的代码,按自己情况修改。
PS:若有错误,敬请告知,不胜感激!