Skip to content

File upload in Selenium standalone fails with JSON parse error #5354

@ildar-aim

Description

@ildar-aim

Meta -

OS:
Linux aim-server.crtdev.local 4.13.12-1-ARCH #1 SMP PREEMPT Wed Nov 8 11:54:06 CET 2017 x86_64 GNU/Linux
Selenium Version:
Selenium build info: version: '3.8.1', revision: '6e95a6684b'
Browser:
chromium 62.0.3202.94-1 (64 bit)

Browser Version:
ChromeDriver 2.32 (64 bit)

Expected Behavior -

A large file is uploaded

Actual Behavior -

error in output

PHP Fatal error:  Uncaught PHPWebDriver_UnhandledWebDriverError: Failed parsing JSON source: JsonReader at line 1 column 52768645 path $.file to Json in /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/php-webdriver/PHPWebDriver/WebDriverBase.php:50
Stack trace:
#0 /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/php-webdriver/PHPWebDriver/WebDriverBase.php(216): PHPWebDriver_WebDriverBase::throwException(13, 'Failed parsing ...', Array)
#1 /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/php-webdriver/PHPWebDriver/WebDriverBase.php(261): PHPWebDriver_WebDriverBase->curl('POST', '/file', Array, Array)
#2 /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/php-webdriver/PHPWebDriver/WebDriverElement.php(73): PHPWebDriver_WebDriverBase->__call('file', Array)
#3 /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/upload_patches_toFA.php(613): PHPWebDriver_WebDriverElement->sendKeys('/home/aim/tmp/u...')
#4 {main}
  thrown in /home/aim/public_html/xcart_4_6_x/tests/selenium_tests/php-webdriver/PHPWebDriver/WebDriverBase.php on line 50

verbose error from CURL

* Hostname localhost was found in DNS cache
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 4444 (#0)
> POST /wd/hub/session/549e21ce02ce6a31df225d68ab4e546e/file HTTP/1.1^M
Host: localhost:4444^M
Content-Type: application/json;charset=UTF-8^M
Accept: application/json^M
Content-Length: 92412893^M
^M
* We are completely uploaded and fine
< HTTP/1.1 500 Server Error^M
< Content-Type: application/json;charset=utf-8^M
< Content-Length: 4376^M
< Server: Jetty(9.4.7.v20170914)^M
< ^M
* Connection #0 to host localhost left intact

result from CURL

stdClass Object
(
    [value] => stdClass Object
        (
            [stacktrace] => com.google.gson.JsonParseException: Failed parsing JSON source: JsonReader at line 1 column 52768645 path $.file to Json
	at com.google.gson.JsonParser.parse(JsonParser.java:88)
	at com.google.gson.JsonParser.parse(JsonParser.java:59)
	at com.google.gson.JsonParser.parse(JsonParser.java:45)
	at org.openqa.selenium.json.JsonToBeanConverter.convert(JsonToBeanConverter.java:203)
	at org.openqa.selenium.json.JsonToBeanConverter.convert(JsonToBeanConverter.java:57)
	at org.openqa.selenium.json.Json.toType(Json.java:78)
	at org.openqa.selenium.remote.server.commandhandler.UploadFile.execute(UploadFile.java:47)
	at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:240)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3332)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
	at java.lang.StringBuilder.append(StringBuilder.java:190)
	at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1013)
	at com.google.gson.stream.JsonReader.nextString(JsonReader.java:815)
	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:701)
	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:722)
	at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:697)
	at com.google.gson.internal.Streams.parse(Streams.java:48)
	at com.google.gson.JsonParser.parse(JsonParser.java:84)
	at com.google.gson.JsonParser.parse(JsonParser.java:59)
	at com.google.gson.JsonParser.parse(JsonParser.java:45)
	at org.openqa.selenium.json.JsonToBeanConverter.convert(JsonToBeanConverter.java:203)
	at org.openqa.selenium.json.JsonToBeanConverter.convert(JsonToBeanConverter.java:57)
	at org.openqa.selenium.json.Json.toType(Json.java:78)
	at org.openqa.selenium.remote.server.commandhandler.UploadFile.execute(UploadFile.java:47)
	at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:240)
	at org.openqa.selenium.remote.server.WebDriverServlet$$Lambda$83/1178793517.run(Unknown Source)
	... 5 more

            [stackTrace] => Array
                (
                    [0] => stdClass Object
                        (
                            [fileName] => JsonParser.java
                            [methodName] => parse
                            [className] => com.google.gson.JsonParser
                            [lineNumber] => 88
                        )

                    [1] => stdClass Object
                        (
                            [fileName] => JsonParser.java
                            [methodName] => parse
                            [className] => com.google.gson.JsonParser
                            [lineNumber] => 59
                        )

                    [2] => stdClass Object
                        (
                            [fileName] => JsonParser.java
                            [methodName] => parse
                            [className] => com.google.gson.JsonParser
                            [lineNumber] => 45
                        )

                    [3] => stdClass Object
                        (
                            [fileName] => JsonToBeanConverter.java
                            [methodName] => convert
                            [className] => org.openqa.selenium.json.JsonToBeanConverter
                            [lineNumber] => 203
                        )

                    [4] => stdClass Object
                        (
                            [fileName] => JsonToBeanConverter.java
                            [methodName] => convert
                            [className] => org.openqa.selenium.json.JsonToBeanConverter
                            [lineNumber] => 57
                        )

                    [5] => stdClass Object
                        (
                            [fileName] => Json.java
                            [methodName] => toType
                            [className] => org.openqa.selenium.json.Json
                            [lineNumber] => 78
                        )

                    [6] => stdClass Object
                        (
                            [fileName] => UploadFile.java
                            [methodName] => execute
                            [className] => org.openqa.selenium.remote.server.commandhandler.UploadFile
                            [lineNumber] => 47
                        )

                    [7] => stdClass Object
                        (
                            [fileName] => WebDriverServlet.java
                            [methodName] => lambda$handle$0
                            [className] => org.openqa.selenium.remote.server.WebDriverServlet
                            [lineNumber] => 240
                        )

                    [8] => stdClass Object
                        (
                            [fileName] => Executors.java
                            [methodName] => call
                            [className] => java.util.concurrent.Executors$RunnableAdapter
                            [lineNumber] => 511
                        )

                    [9] => stdClass Object
                        (
                            [fileName] => FutureTask.java
                            [methodName] => run
                            [className] => java.util.concurrent.FutureTask
                            [lineNumber] => 266
                        )

                    [10] => stdClass Object
                        (
                            [fileName] => ThreadPoolExecutor.java
                            [methodName] => runWorker
                            [className] => java.util.concurrent.ThreadPoolExecutor
                            [lineNumber] => 1149
                        )

                    [11] => stdClass Object
                        (
                            [fileName] => ThreadPoolExecutor.java
                            [methodName] => run
                            [className] => java.util.concurrent.ThreadPoolExecutor$Worker
                            [lineNumber] => 624
                        )

                    [12] => stdClass Object
                        (
                            [fileName] => Thread.java
                            [methodName] => run
                            [className] => java.lang.Thread
                            [lineNumber] => 748
                        )

                )

            [message] => Failed parsing JSON source: JsonReader at line 1 column 52768645 path $.file to Json
            [error] => unknown error
        )

    [status] => 13
)

output from selenium

08:48:36.721 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@5de30824
08:48:36.722 INFO - Handler thread for session 549e21ce02ce6a31df225d68ab4e546e (chrome): Executing POST on /session/549e21ce02ce6a31df225d68ab4e546e/element (handler: ServicedSession)
08:48:36.724 INFO - To upstream: {"using":"id","value":"remotefile_1"}
08:48:36.753 INFO - To downstream: {"sessionId":"549e21ce02ce6a31df225d68ab4e546e","status":0,"value":{"ELEMENT":"0.4092952270388037-1"}}
08:48:39.804 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.UploadFile@4a0961cd
08:48:39.804 INFO - /session/549e21ce02ce6a31df225d68ab4e546e/file: Executing POST on /session/549e21ce02ce6a31df225d68ab4e546e/file (handler: UploadFile)
18/01/2018 09:05:07 idle keyboard:   turning X autorepeat back on.

Steps to reproduce -

1)Start Xvfb :99 -screen 0 1280x1024x24 -ac &
2)Start export DISPLAY=:99 && java -jar -Dwebdriver.chrome.driver="/usr/bin/chromedriver" /usr/share/selenium-server/selenium-server-standalone.jar &
3)Upload a file larger than 70Mb via a php-driver
4)The php-driver uses PHPWebDriver_WebDriverBase->curl('POST', '/file', Array, Array) command

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions