Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于JsonException:试图关闭不完整的json流,因此org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;)_Java_Selenium_Selenium Webdriver_Testng_Selenium Chromedriver - Fatal编程技术网

由于JsonException:试图关闭不完整的json流,因此org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;)

由于JsonException:试图关闭不完整的json流,因此org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;),java,selenium,selenium-webdriver,testng,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Testng,Selenium Chromedriver,在我将TestNG更新为6.14.3并将Selenium更新为3.13.0之后,我得到了上述Json异常。我正在使用ChromeDriver()实现自动化。以下是关于我的代码的简要想法: @BeforeSuite: System.setProperty("webdriver.chrome.driver", "path to chrome driver"); @BeforeMethod: driver = new ChromeDriver(); @AfterMethod: driver.qui

在我将TestNG更新为6.14.3并将Selenium更新为3.13.0之后,我得到了上述Json异常。我正在使用ChromeDriver()实现自动化。以下是关于我的代码的简要想法:

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

@BeforeMethod:
driver = new ChromeDriver();

@AfterMethod:
driver.quit();
我以前的TestNG和Selenium版本分别是6.11.0和3.7.1

代码尝试启动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)
java.lang.NoSuchMethodError:org.openqa.selenium.json.JsonOutput.write(Ljava/lang/Object;Ljava/lang/reflect/Type;)Lorg/openqa/selenium/json/JsonOutput;
位于org.openqa.selenium.remote.NewSessionPayload.writeTo(NewSessionPayload.java:247)
位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:69)
位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
位于org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:130)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:181)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:168)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:123)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
位于org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
位于org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
位于org.testng.internal.Invoker.invokeConfigulations(Invoker.java:222)
位于org.testng.internal.Invoker.invokeMethod(Invoker.java:523)
位于org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
位于org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
位于org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
位于org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
位于org.testng.TestRunner.privateRun(TestRunner.java:648)
位于org.testng.TestRunner.run(TestRunner.java:505)
位于org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
在org.testng.SuiteRunner.runsequential上(SuiteRunner.java:450)
位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
运行(SuiteRunner.java:364)
位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
在org.testng.testng.runSuitesSequentially上(testng.java:1208)
位于org.testng.testng.runSuitesLocally(testng.java:1137)
位于org.testng.testng.runSuites(testng.java:1049)
位于org.testng.testng.run(testng.java:1017)
位于org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
抑制:org.openqa.selenium.json.JsonException:尝试关闭不完整的json流
构建信息:版本:“3.13.0”,修订版:“2f0d292”,时间:“2018-06-25T15:24:21.231Z”
驱动程序信息:Driver.version:ChromeDriver
位于org.openqa.selenium.json.JsonOutput.close(JsonOutput.java:263)
位于org.openqa.selenium.remote.NewSessionPayload.writeTo(NewSessionPayload.java:270)
此错误消息:

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
…意味着在JVM试图转义某些字符时引发了java.lang.NoSuchMethodError

如果没有与测试环境相关的以下信息,则很难分析错误:

  • selenium-server-standalone-3.13.0.jarselenium-java-3.13.0客户端
  • JARsMavenGradle
但此错误来自以下源代码:

  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");
    }
  }
理由 可能的原因如下:

  • 通过Selenium-server-standalone-3.13.0.jarSelenium-java-3.13.0客户端jar,存在多个与硒相关的jar
  • 通过JARMaven和/或Gradle存在多个硒相关JAR
  • gson-2.8.2.jar的存在,如合同中明确提到的:

    * Introduced our own JSON parser and outputter, allowing GSON to be removed from our dependencies.
    
解决方案
  • 如果使用手动下载的JAR文件,请删除所有与Selenium相关的外部JAR并添加新下载的JAR
  • 如果使用MavenGradle,请执行以下步骤:
    • 通过CLI:
      mvn clean
      (清除以前的依赖项)
    • 通过CLI:
      mvn安装
      (安装必要的依赖项)
    • 通过CLI:
      mvn测试
      (执行testsuite)

我使用follow config修复它


org.seleniumhq.selenium
硒爪哇
3.14.0
org.seleniumhq.selenium
硒铬驱动器
3.141.5
org.seleniumhq.selenium
硒原料药
3.141.5
org.seleniumhq.selenium
selenium远程驱动程序
3.141.5
木卫一
java客户端
6.1.0

只需使用以下依赖项,它就能解决您的问题

别忘了重建

 <dependencies>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>6.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.14.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>3.141.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>3.14.0</version>
        </dependency>

木卫一
java客户端
6.1.0
org.seleniumhq.selenium
硒爪哇
3.14.0
org.se