简体   繁体   中英

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

I created a test class using TestNG and in this class I defined 5 test methods. When I run the test, the TestNG console shows that 3 scenarios of the total of 5 have been executed (see the image below). 图片说明在这里 The registroNovo and tabulacaoTratamento methods are not executed. When I close the browser (Chrome) the TestNG console displays the following error screen that follows below.

在此处输入图片说明

Eclipse console displays the following error message:

 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)

Has anyone ever seen this kind of error?

Basically I created 4 classes:

The BaseTest class which has all methods that are common to all test classes:

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();

}}

The test class ValidarFaturamentoRoamingTest which extends the class BaseTest :

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();     
}}

The class TratOsFatRoamPage which extends the class 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");

}}

And the class BasePage which has all the methods that are common classes:

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);

}}

在此处输入图片说明

org.openqa.selenium.WebDriverException: chrome not reachable

This means that for some reason there is no communication happening between driver and chrome instance; in your case that reason is you are closing it manually after 3 Tests are run. and your TestNG console displays the error screen because last 2 test cases weren't run due to closing of browser.

So here your real issue is what is taking second last test to take time?

For that post some code.

This error message...

org.openqa.selenium.WebDriverException: chrome not reachable

...implies that the ChromeDriver was unable to communicate with the WebBrowser ie Chrome Browsing session.

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

  • You are using chromedriver=2.40
  • You are using chrome=67.0
  • Your Selenium Client version is 3.8.0 of 2017-11-30T11:36:59.109Z which is almost six months older.
  • Your JDK version is 1.8.0_131 which is pretty ancient .

So there is a clear mismatch between the JDK v8u131 , Selenium Client v3.8.0 , ChromeDriver v2.40 and Chrome Browser v67.0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM