org.openqa.selenium.json.JsonOutput.write (Ljava / lang / Object; Ljava / lang / refle / Type;) из-за JsonException: попытка закрыть неполный поток json - PullRequest
0 голосов
/ 28 июня 2018

Я получаю указанное выше исключение Json после того, как обновил свой TestNG до 6.14.3 и Selenium до 3.13.0. Я использую ChromeDriver () для моей автоматизации. Вот краткое представление о моем коде:

@BeforeSuite:
System.setProperty("webdriver.chrome.driver", "path to chrome driver");

@BeforeMethod:
driver = new ChromeDriver();

@AfterMethod:
driver.quit();

Мои предыдущие версии были 6.11.0 и 3.7.1 соответственно для TestNG и Selenium.

Исключение наступает, когда код пытается запустить сеанс WebDriver.

Полное исключение:

java.lang.NoSuchMethodError: org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;)Lorg/openqa/selenium/json/JsonOutput;
  at org.openqa.selenium.remote.NewSessionPayload.writeTo(NewSessionPayload.java:247)
  at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:69)
  at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
  at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
  at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
  at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
  at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
  at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
  at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
  at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
  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:124)
  at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
  at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
  at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
  at org.testng.internal.Invoker.invokeMethod(Invoker.java:523)
  at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
  at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
  at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
  at org.testng.TestRunner.privateRun(TestRunner.java:648)
  at org.testng.TestRunner.run(TestRunner.java:505)
  at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
  at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
  at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
  at org.testng.SuiteRunner.run(SuiteRunner.java:364)
  at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
  at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
  at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
  at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
  at org.testng.TestNG.runSuites(TestNG.java:1049)
  at org.testng.TestNG.run(TestNG.java:1017)
  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)
Suppressed: org.openqa.selenium.json.JsonException: Attempting to close incomplete json stream
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z'
Driver info: driver.version: ChromeDriver
    at org.openqa.selenium.json.JsonOutput.close(JsonOutput.java:263)
    at org.openqa.selenium.remote.NewSessionPayload.writeTo(NewSessionPayload.java:270)

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Я исправляю это, следуй конфигу

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.14.0</version>
</dependency>

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-chrome-driver</artifactId>
  <version>3.141.5</version>
</dependency>

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-api</artifactId>
  <version>3.141.5</version>
</dependency>

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-remote-driver</artifactId>
  <version>3.141.5</version>
</dependency>
<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>6.1.0</version>
</dependency>
0 голосов
/ 29 июня 2018

Это сообщение об ошибке:

java.lang.NoSuchMethodError: org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;)Lorg/openqa/selenium/json/JsonOutput;
.
Suppressed: org.openqa.selenium.json.JsonException: Attempting to close incomplete json stream

... подразумевает, что java.lang.NoSuchMethodError было вызвано, когда JVM пыталась экранировать некоторые символы.

Довольно сложно проанализировать ошибку при отсутствии следующей информации, относящейся к Тестовой среде :

  • selenium-server-standalone-3.13.0.jar или selenium-java-3.13.0 client.
  • банок или Maven или Gradle

Но эта ошибка возникает из следующего исходного кода:

  public void close() {
    if (appendable instanceof Closeable) {
      try {
    ((Closeable) appendable).close();
      } catch (IOException e) {
    throw new JsonException(e);
      }
    }

    if (!(stack.getFirst() instanceof Empty)) {
      throw new JsonException("Attempting to close incomplete json stream");
    }
  }

Причина

Возможная причина может быть одной из следующих:

  • Наличие нескольких связанных с Selen jar * от 1037 * до selenium-server-standalone-3.13.0.jar и selenium-java-3.13.0 клиентских jar.
  • Наличие нескольких селеновых банок - JAR и Maven и / или Gradle .
  • Присутствие gson-2.8.2.jar , как Замечания к выпуску Selenium v3.13.0 , четко упоминает:

    * Introduced our own JSON parser and outputter, allowing GSON to be removed from our dependencies.
    

Решение

  • Если вы используете загруженные вручную файлы JAR , удалите все Selenium связанные Внешние файлы JAR и добавьте только что загруженный.
  • При использовании Maven или Gradle выполните следующие действия:
    • через CLI: mvn clean (чтобы стереть предыдущие зависимости)
    • Через CLI: mvn install (для установки необходимых зависимостей)
    • Через CLI: mvn test (для выполнения тестового набора)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...