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

问题描述 投票:2回答:2

我在1周后面临上述问题。早些时候,它运作顺利。即使现在有时它工作正常,但大多数时候我得到“无法连接到localhost /”错误。 :(我已将Chrome驱动程序升级到2.37,现在将其降级为2.36,但没有运气。:(谢谢。

问题详细信息: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

以下是供您参考的代码:注意:它可以正常工作直到登录。只有当我尝试在登录后搜索某个元素时才会出现问题。

    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 selenium selenium-webdriver selenium-chromedriver
2个回答
1
投票

错误说明了一切:

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 v8u131,Selenium Client v3.11.0,ChromeDriver版本(v2.37)之间存在明显的不匹配。

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

0
投票

看看你在哪里实例化驱动器。您写道:System.setProperty(“webdriver.chrome.driver”,“d://chromedriver.exe”);

我认为问题在于镀铬驱动路径。试试:“D:/chromedriver.exe”);

定义路径时应该只有一个正斜杠。

© www.soinside.com 2019 - 2024. All rights reserved.