网上、书上,有太多关于selenium安装的介绍,按照他们的教学步骤,一步一步地来安装,肯定是不会成功的!就不多吐槽了。反正从一个坑跳到一个坑,再跳到另一个坑时,会锻炼你的弹跳能力,继而跳出地面。就不像其他文章一样,千篇一律的介绍怎么安装了。悉数一下安装过程中遇到的一些“坑”,下次再安装的时候,就有解决的办法,也可以扶起一些过马路时,摔倒的小伙伴们~
在简单使用了selenium ide工具后,便迫不及待想要搭建起selenium的测试环境,基于Java语言。因为电脑中有现成的Java环境,直接下载selenium包,导入到程序中即可。按照网上某教程,我安装的selenium-java包是2.44版本的。下了一个1.0.3版本的seleniumRC包。像网上一样,写了下面一段用于搜索百度的代码:
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.firefox.FirefoxDriver;
publicclasstest {
publicstaticvoidmain(String[]args) {
System.out.println("start firefox browser...");
System.out.println("222222");
WebDriverdriver=newFirefoxDriver();
System.out.println("33333");
driver.get("https://www.baidu.com/");
System.out.println("444444.");
driver.findElement(By.id("kw")).sendKeys("selenium java");
System.out.println("555555.");
driver.findElement(By.id("su")).click();
System.out.println("66666.");
System.out.println("start firefox browser succeed...");
driver.close();
}
}
然后报出了这样的错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA
是因为火狐浏览器不是默认安装在C盘,需要只指定安装目录,加上这样一句代码(有的时候,安装在C盘,也要加上这样一句话):
System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");//根据自己火狐应用程序的位置而定
WebDriver driver = new FirefoxDriver();
加上这样一句代码以后,可以打开火狐浏览器了,但是一直是一个空白的页面,控制台报出了下面的错误:
Exception in thread "main"Java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, seehttp://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded fromhttp://code.google.com/p/chromedriver/downloads/list
这是因为火狐的版本升级太快,跟selenium包不兼容,尝试着找最新的selenium包和降低火狐浏览器的版本,各种各样的打log调试,最终把电脑环境装的乱七八糟,还是以失败告终。在解决这个问题的时候,我知道只要安装selenium-server-standalone这一个jar包,其他的包都不用安装了。下载了3.0.1版本的这个包,也没什么用,不过版本高了很多。也保留了高版本的selenium-Java包。
感到很烦躁以后,换了谷歌浏览器,就是把WebDriverdriver=newFirefoxDriver();这句代码替换成WebDriverdriver=newChromeDriver();在程序中导入ChromeDriver包。System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");这里要指定谷歌浏览器的安装地址。还是报一样的错误,浏览器没有打开,在网上查看了很多资料,需要下载chromedriver.exe,并把它放在chrome.exe目录下,然后把该文件的路径配置到path环境变量中。同时,也把这句代码System.setProperty("webdriver.firefox.bin", "谷歌浏览器应用程序所在位置");改成这句System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver_x64.exe");(像我这样手把手说的,还有谁。)
终于,浏览器打开了,但是提示使用的不是支持的命令:
没有找到解决的办法,快要放弃了,个人觉得这次不是因为版本的问题,可能是安全证书方面的问题。看见了Python的解决办法,但自己太薄弱,太缺少学以致用的能力。
又去转战火狐,偶然见看见geckodriver.exe驱动,很激动的按照谷歌的方法配置起来。
结果……………………………………………………………………………………………………………………就这么运行出来了。虽然还没有吃透geckodriver这个小玩意,但是看见所有的log都准确的打印出来,感觉 ……………… ……………………………………………………………………………………………非常棒!
一小勺鸡汤:第一:必须要具备一些知识储备,这样才能看懂别人的安装介绍,才能知道自己的问题出在哪里,在改代码或者灵活变动的时候,会知道有哪些地方也要一起改,不然更加举步维艰。没有任何一个教程可以写详细每一种情况。第二:虽然,有些问题,你没有解决,但是在解决问题的同时,看了很多周边的知识,会对你遇到的下一个问题有帮助,就像没有任何一个经历是多余的一样,善于利用,也没有任何一件事情是徒劳的。(如果没有谷歌安装的经历,在看见火狐的geckodriver驱动时,就没有很强烈的嗅觉。)第三:必须要再进一步的扩展宽度,才能举一反三,学以致用,达到你想要的高度。