1.我的webdriver启动浏览器很简单
public void getWebDriver() {
System.out.println("开始启动浏览器...");
System.setProperty("webdriver.chrome.driver","c:\\chromedriver.exe");
driver = new ChromeDriver();
if (driver != null) {
System.out.println("浏览器启动成功...");
this.driver = driver;
} else {
System.out.println("浏览器启动失败...");
}
}
可是在运行的时候却报了如下的错误:
2、开始解决问题,首先要去看看 PortProber.findFreePort()方法是如何查找可用的端口的
该类在package org.openqa.selenium.net;中
在这里可以看到在实现的时候是循环了5次去查找可用的端口,如果找不到就包错了。
在这里我们需要关注一下 checkPortIsFree(int port)找个方法,找个方法的具体实现是:
很明显代码中利用socket服务来验证一个端口是否可用,验证完毕后进行socket服务的关闭,以便是否找个可用的端口,后续来给启动浏览器用。
于是将该部分代码进行测试,结果发现了如下的错误:
好了出现了JVM_Bind的错误,此时就开始度娘了。
中间找到了这样的一篇文章: http://blog.csdn.net/damaolly/article/details/22270759
里面给我最大的启发就是:
此时突然想起来我前几天就修改过hosts文件。
因为我的IP是动态获取的。
于是我将里面的
10.11.112.77 localhost进行了注释
同时又开放了
127.0.0.1 localhost
此时再次通过webdriver启动浏览器就没有问题了,在这里做个小小的记录。