java - org.openqa.selenium.WebDriverException : chrome not reachable using Selenium and ChromeDriver

标签 java google-chrome selenium selenium-webdriver selenium-chromedriver

我使用 TestNG 创建了一个测试类,并在该类中定义了 5 个测试方法。当我运行测试时,TestNG 控制台显示总共 5 个场景中的 3 个场景已执行(见下图)。 Image description here 不执行 registroNovo 和 tabulacaoTratamento 方法。 当我关闭浏览器 (Chrome) 时,TestNG 控制台会显示以下错误屏幕。

enter image description here

Eclipse 控制台显示以下错误消息:

 org.openqa.selenium.WebDriverException: chrome not reachable
  (Session info: chrome=67.0.3396.87)
  (Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.8.0', revision: '924c4067df', time: '2017-11-30T11:36:59.109Z'
System info: host: 'RJO-BCC-C2A-H21', ip: '10.5.79.38', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.40.565498 (ea082db3280dd6..., userDataDir: C:\Users\lsnpere\AppData\Lo...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 67.0.3396.87, webStorageEnabled: true}
Session ID: 32d0291ab5ecaa1141f9997771edcd95
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)
    at org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.alert(RemoteWebDriver.java:987)
    at org.openqa.selenium.support.ui.ExpectedConditions$28.apply(ExpectedConditions.java:808)
    at org.openqa.selenium.support.ui.ExpectedConditions$28.apply(ExpectedConditions.java:804)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
    at page.RegistroNovo.registroNovo(RegistroNovo.java:25)
    at test.ValidarFaturamentoRoamingTest.registroNovo(ValidarFaturamentoRoamingTest.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:774)
    at org.testng.TestRunner.run(TestRunner.java:624)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
    at org.testng.SuiteRunner.run(SuiteRunner.java:261)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.run(TestNG.java:1048)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

有人见过这种错误吗?

基本上我创建了 4 个类:

BaseTest 类具有所有测试类通用的所有方法:

public class BaseTest {

public static WebDriver driver;
public static WebDriverWait wait;

@BeforeClass
public static void setup() {

    System.setProperty("webdriver.chrome.driver", "e:\\Selenium\\chromedriver.exe");
    driver = new ChromeDriver();
    wait = new WebDriverWait(driver, 15);
    driver.manage().window().maximize();

}

@AfterClass
public static void tearDown() throws InterruptedException {

    Thread.sleep(5000);
    driver.findElement(By.id("mn_sair"));
    driver.quit();

}}

扩展类BaseTest的测试类ValidarFaturamentoRoamingTest:

public class ValidarFaturamentoRoamingTest extends BaseTest {

@Test(priority=0)
public void acessarBkoMais() {

    HomePage homepage = new HomePage(driver, wait);
    homepage.abrirBkoMais();
}
@Test(priority=1)
public void logarBkoMais() {

    LoginPage logar = new LoginPage(driver, wait);
    logar.loginBkoMais("000000", "000000");
}
@Test(priority=2)
public void logarEstrategia() {

    LogarEstrategiaPage logarEstrategia = new LogarEstrategiaPage(driver, wait);
    logarEstrategia.logarEstrategia();  
}
@Test(priority=3)
public void registroNovo() {
    RegistroNovo registroNovo = new RegistroNovo(driver, wait);
    registroNovo.registroNovo();
}
@Test(priority=4)
public void tabulacaoTratamento() {

    TratOsFatRoamPage rt = new TratOsFatRoamPage(driver, wait);
    rt.TratOsFatRoam();     
}}

TratOsFatRoamPage,它扩展了类BasePage

public class TratOsFatRoamPage extends BasePage {

public TratOsFatRoamPage(WebDriver driver, WebDriverWait wait) {

    super(driver, wait);

}

String idMotivo = "cboMotivo";
String idSubMotivo = "cboSubMotivo";
String idStatus = "cboStatus";
String qtdNumerosFaturas = "txtQtdFaturas";
String qtdNumerosCotas = "txtQtdContas";
String idObservacao = "txtObservacao";
String idSalvar = "btnSalvar";

public void TratOsFatRoam() {

    writeText(By.id(qtdNumerosFaturas),"Teste 2018");
    writeText(By.id(qtdNumerosCotas), "2018-2");

}}

还有类BasePage,它具有公共(public)类的所有方法:

public class BasePage {

public WebDriver driver;
public WebDriverWait wait;

public BasePage(WebDriver driver, WebDriverWait wait) {

    this.driver = driver;
    this.wait = wait;

}

public void click(By elementLocation) {

    driver.findElement(elementLocation).click();
}

public void writeText(By elementLocation, String text) {

    driver.findElement(elementLocation).sendKeys(text);

}

public String readText(By elementLocation) {

    return driver.findElement(elementLocation).getText();

}

public void selectText(By elementLocation, String value) {

    Select atividade = new Select(driver.findElement(elementLocation));
    atividade.selectByValue(value);

}}

enter image description here

最佳答案

此错误消息...

org.openqa.selenium.WebDriverException: chrome not reachable

...意味着 ChromeDriver 无法与 WebBrowser 进行通信,即 Chrome 浏览 session 。

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

  • 您正在使用 chromedriver=2.40
  • 您正在使用chrome=67.0
  • 您的 Selenium 客户端版本是 3.8.0,为 2017-11-30T11:36:59.109Z,几乎是6几个月了
  • 您的JDK版本1.8.0_131,这是相当古老的。

因此,JDK v8u131Selenium Client v3.8.0ChromeDriver v2.40Chrome 之间存在明显不匹配浏览器 v67.0

关于java - org.openqa.selenium.WebDriverException : chrome not reachable using Selenium and ChromeDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845597/

相关文章:

java - Selenium : stale element reference: element is not attached to the page document

java - 使用 Ant 编译和运行时出现 NoClassDefFoundError

java - JAXB:带注释的实例的编码列表

google-chrome - 使用 Autohotkey 关闭特定的 chrome 配置文件

Python Selenium add_extensions 关闭安装启动画面

java - 使用 Java 的 Selenium Webdriver - 单击超链接的下拉容器

java - 无法使用 Maven 依赖项运行 Htmlunit 应用程序

java - 更改基本 Java 动画中的颜色

html - Chrome 不再支持 HTML5 视频?

HTML5 输入日期日历样式