我从 1 周开始就面临上述问题。早些时候,它工作顺利。即使是现在有时它也能正常工作,但大多数时候我收到">无法连接到本地主机/"错误。:( 我已经将chrome驱动程序升级到2.37,现在再次将其降级到2.36,但没有运气。:(谢谢。
问题详细信息: java.net.Connect异常:无法连接到本地主机/0:0:0:0:0:0:0:1:4321 构建信息:版本:"3.11.0",修订版:"e59cfb3",时间:"2018-03-11T20:33:15.31Z" 系统信息: 主机: 'GURWUNknjk', ip: '10.202.126.154', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_131' 驱动程序信息: 驱动程序版本: 远程网络驱动程序
以下是供您参考的代码: 注意:在登录之前它工作正常。只有当我登录后尝试搜索某些元素时,才会出现问题。
public static WebDriver driver;
public static void main(String[] args) throws InterruptedException, IOException {
System.setProperty("webdriver.chrome.driver", "d://chromedriver.exe");
driver = new ChromeDriver();
String url = "https://accounts.google.com/signin/v2/identifier?continue=https%3A%2F%2Faccounts.google.com%2Fb%2F0%2FAddMailService&flowName=GlifWebSignIn&flowEntry=AddSession";
driver.get(url);
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 20);
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS) ;
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='Email']")));
if(driver.getCurrentUrl().contains("https://accounts.google.com/signin/v2/identifier?"))
{
driver.findElement(By.id("identifierId")).sendKeys(username);
driver.findElement(By.id("identifierNext")).click(); wait.until(ExpectedConditions.presenceOfElementLocated(By.name("password")));
driver.findElement(By.name("password")).sendKeys(pwd);
driver.findElement(By.name("password")).sendKeys(Keys.ENTER);
}
else{
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='Email']")));
driver.findElement(By.name("Email")).sendKeys(UserName);
driver.findElement(By.id("next")).click(); wait.until(ExpectedConditions.presenceOfElementLocated(By.name("Passwd")));
driver.findElement(By.name("Passwd")).sendKeys(Pwd);
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("signIn")));
driver.findElement(By.id("signIn")).click();
}
wait.until(ExpectedConditions
.visibilityOfElementLocated(By.id(element id)));
driver.findElement(By.id(element id))
.sendKeys(some value);
Thread.sleep(3000);
driver.findElement(By.id(element id)).click(); }
错误说明了一切:
java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:4321
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
System info: host: 'GURWUNknjk', ip: '10.202.126.154', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_131'
Driver info: driver.version: RemoteWebDriver
该错误清楚地表明,ChromeDriver未被识别为:
Driver info: driver.version: RemoteWebDriver
您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:
- 您正在使用的 chromedriver = 2.37
- 我们不知道您的chrome版本。
- 您的硒客户端版本是3.11.0。
- 您的JDK版本是1.8.0_131,这是非常古老的。
因此,JDK v8u131,Selenium客户端v3.11.0,ChromeDriver版本(v2.37)之间存在明显的不匹配。
溶液
- 将JDK升级到最新级别JDK 8u162。
- 将ChromeDriver保持在当前的ChromeDriver v2.37级别。
- 将Chrome 版本保持在Chrome v65.x级别。(根据ChromeDriver v2.37发行说明)
- 通过IDE清理项目工作中心,并仅使用所需的依赖项重新生成项目。
- 使用CCleaner工具在执行测试套件之前和之后清除所有操作系统杂务。
- 如果您的基本 Web 客户端版本太旧,请通过Revo 卸载程序将其卸载,并安装最新的 GA 和已发布版本的Web 客户端。
- 重新启动系统。
- 执行您的
@Test
。
查看您实例化驱动器的位置。 你写了: System.setProperty("webdriver.chrome.driver", "d://chromedriver.exe");
我相信问题出在铬驱动器路径上。 尝试:"D:/chromedriver.exe");
定义路径时应只有一个正斜杠。