如何解决"org.openqa.selenium.WebDriverException: java.net.ConnectException: 无法连接到 localhost/"用谷歌驱动?

我从 1 周开始就面临上述问题.早些时候它工作顺利.即使现在有时它也可以正常工作,但大多数时候我都会收到无法连接到 localhost/"错误.:(我已将 chrome 驱动程序升级到 2.37,现在又将其降级到 2.36,但没有运气.:( 谢谢.

I am facing above mentioned issue since 1 week. Earlier it was working smoothly. Even now sometimes it works fine but most of the time I am getting "Failed to connect to localhost/" error. :( I have upgraded chrome driver to 2.37 now downgraded it again to 2.36 but no luck. :( Thanks.

问题详情:java.net.ConnectException: 无法连接到 localhost/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'驱动信息:driver.version:RemoteWebDriver

以下代码供您参考:注意:在登录之前它工作正常.只有当我在登录后尝试搜索某些元素时才会出现问题.

Here is code for your reference: Note : It works fine till login. Issue comes only when I try to search some element after login.

    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 未被识别为:

The error clearly shows that the ChromeDriver was not recognized as in :

Driver info: driver.version: RemoteWebDriver

您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

Your main issue is the version compatibility between the binaries you are using as follows :

  • 您正在使用 chromedriver=2.37
  • 我们不知道您的 chrome 版本.
  • 您的 Selenium 客户端 版本是 3.11.0.
  • 您的 JDK 版本是 1.8.0_131,相当古老.
  • You are using chromedriver=2.37
  • Your chrome version is unknown to us.
  • Your Selenium Client version is 3.11.0.
  • Your JDK version is 1.8.0_131 which is pretty ancient.

所以 JDK v8u131 、Selenium Client v3.11.0 、ChromeDriver 版本之间存在明显的不匹配(v2.37).

So there is a clear mismatch between the JDK v8u131 , Selenium Client v3.11.0 , ChromeDriver version (v2.37).

  • 将 JDK 升级到最新级别 JDK 8u162.
  • 将 ChromeDriver 保留在当前 ChromeDriverv2.37 级别.
  • 将 Chrome 版本保持在 Chrome v65.x 级别.(根据 ChromeDriver v2.37 发行说明)
  • 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖.
  • 使用 CCleaner 工具清除之前和在您的测试套件执行之后.
  • 如果您的基础 Web Client 版本太旧,请通过 卸载它Revo Uninstaller 并安装最新的 GA 和发布版本的 Web Client.
  • 进行一次系统重启.
  • 执行你的 @Test.
  • Upgrade JDK to recent levels JDK 8u162.
  • Keep ChromeDriver at current ChromeDriver v2.37 level.
  • Keep Chrome version at Chrome v65.x levels. (as per ChromeDriver v2.37 release notes)
  • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
  • Use CCleaner tool to wipe off all the OS chores before and after the execution of your test Suite.
  • If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.
  • Take a System Reboot.
  • Execute your @Test.

相关文章