java - 如何用谷歌驱动解决 "org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/"?

标签 java selenium selenium-webdriver selenium-chromedriver

自 1 周以来,我一直面临上述问题。早些时候它工作顺利。即使现在有时它也能正常工作,但大多数时候我都会收到“无法连接到本地主机/”错误。 :( 我已将 chrome 驱动程序升级到 2.37,现在又将其降级到 2.36,但没有成功。 :( 谢谢。

问题详情: java.net.ConnectException: 无法连接到本地主机/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

下面是代码供您引用: 注意:在登录之前它工作正常。仅当我在登录后尝试搜索某些元素时才会出现问题。

    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 版本。
  • 您的 Selenium 客户端 版本是 3.11.0
  • 您的JDK 版本1.8.0_131,这是非常古老的。

因此 JDK v8u131Selenium Client v3.11.0ChromeDriver 版本(v2.37 )。

解决方案

  • JDK 升级到最新级别 JDK 8u162 .
  • ChromeDriver 保持在当前 ChromeDriver v2.37水平。
  • Chrome 版本保持在 Chrome v65.x 级别。 ( as per ChromeDriver v2.37 release notes )
  • 清理您的项目工作区,通过您的IDE重建您的项目,仅使用所需的依赖项。
  • 使用CCleaner用于在执行您的测试套件之前和之后清除所有操作系统杂务的工具。
  • 如果您的基本 Web Client 版本太旧,请通过 Revo Uninstaller 卸载它。并安装最新的 GA 和发布版本的 Web Client
  • 系统重启
  • 执行你的@Test

关于java - 如何用谷歌驱动解决 "org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49820706/

相关文章:

Java Swing、 boolean 值和文本字段

php - "When I fill the following fields"输入今天的日期?

java - 如何在删除该列表的项目后更新列表

java - 我如何判断一个 joda-time DateTime 对象是否在另一个对象的 4 小时内?

python - 如何使用 selenium python 获取伪元素的 css 值?

testing - 在 Selenium 中断言和验证

django - 如何在 Selenium/Django 单元测试中创建 session 变量?

java - 无法在selenium中从电脑上传excel文件

java - 使用 Selenium Java 在网页上按多个选项卡

java - 如何强制弹出 Android 键盘?