Turn your manual testers into automation experts! Request a DemoStart testRigor Free

What is JsonException in Selenium?

You must have heard about JSON (JavaScript Object Notation) during programming. It is a popular way of transferring data between server and client, as popular as XML.

How does Selenium use JSON?

Imagine Selenium as a restaurant and the browser driver as the chef in the kitchen. The customer, that is, you, wants to order a meal, that is, perform a browser action. In this analogy, JSON acts like the waiter who communicates your order to the chef and returns the prepared dish to you.

Thus, you can say that JSON plays a vital role in Selenium by:

  • Sending commands
  • Translating the command into a browser-driver-compatible format
  • Returning feedback on the executed commands
  • Handling special requests or mistakes like custom commands or exceptions

Reasons for JsonException

Selenium WebDriver uses JSON to communicate with the browser driver. If you face the JsonException in Selenium, you can expect an issue with the JSON payload used in Selenium WebDriver commands. Here are some reasons for this:

Malformed JSON

If the JSON message is not properly structured, it may be missing curly braces, incorrect syntax, etc., and the browser driver can’t parse it, leading to a JsonException.

Example: Sending a command with a payload like {“command”: “open”, “url”: “http:www.example.com}. The command is missing a closing quote for the URL.

Incorrect data types

If the JSON message contains data types that are not expected, like a string instead of an integer, it can cause a JsonException.

Example: Providing a string value for a command that expects a numerical input, like {“timeout”: “three seconds”} instead of {“timeout”: 3000}.

Serialization/deserialization issues

Issues can arise when converting WebDriver commands to JSON (serialization) or JSON responses back to a format WebDriver understands (deserialization).

Example: An issue in the WebDriver where it fails to serialize a complex object into JSON correctly.

Communication issues

Problems in the communication link between WebDriver and the browser driver cause incomplete or corrupted JSON messages.

Example: Network issues that result in incomplete JSON messages being transmitted.

Sample error scenario

Consider a scenario where you’re using Selenium WebDriver to interact with a web browser. You write a command to set a timeout for page loading but mistakenly pass a string instead of an integer:

driver.set_page_load_timeout(“60”)

Internally, this might get converted to a JSON message like {“timeout”: “60”}. When the browser driver tries to parse this, it expects an integer for the timeout value but finds a string instead, leading to a JsonException.

The correct usage would be

driver.set_page_load_timeout(60)

This results in a valid JSON message like {“timeout”: 60}.

Resolution for JsonException

This issue can be fixed by simply reading the error messages to get more clues.

Check JSON syntax and structure

Ensure that your JSON payloads in Selenium commands are properly built and formatted. Common mistakes made are:

  • Missing or extra commas, brackets, or braces.
  • Incorrect field names or data types.
  • Syntax errors like missing quotes around string values.

Validate data types and values

Verify that the data types and values in the JSON message match those expected by the WebDriver API. For example, an API could expect a number, but if a string is passed, it would throw a JsonException.

Update Selenium and browser drivers

Exceptions may arise from inconsistencies between various versions of Selenium WebDriver and browser drivers. Check that you have compatible versions of Selenium and browser drivers, which should be updated too.

Check for serialization/deserialization issues

If you modify or extend WebDriver commands, ensure that your code correctly serializes objects to JSON and deserializes JSON responses.

Network stability and configuration

Sometimes, JSON messages can become corrupted due to network problems in distributed testing environments or remote WebDriver setups. Your network should be stable with proper configuration settings for timeouts and retries.

How does testRigor prevent such issues?

If you are a developer, debugging these issues may be relatively easier for you. But let’s not forget that both technical and non-technical folks do testing. To simplify automation testing for a larger spectrum of users, you would better opt for a no-code test automation tool like testRigor.

Whether a technical or non-technical user works with testRigor, this AI-based tool makes test case creation, execution, and maintenance more accessible and much easier than what is possible with Selenium. Let’s see how it does this:

  • To begin with, problems like “JsonException” will not annoy you since testRigor presents error messages in plain English that are easy to understand by any user. So you do not have to worry about using JSON; rather, you should concentrate on building robust test cases in plain English.
  • testRigor allows tests written in plain English through generative AI without writing any code. Nevertheless, if you want to code, you can still do it by accessing the manual where JavaScript and JSONPath command writing is possible.
  • The documentation contains various valuable functions for creating complex or easy test cases.
  • The best thing about using testRigor is that it provides a one-stop solution to all your testing requirements, whether web, mobile, API, or desktop testing.
  • Also, various test management, infrastructure, and CI/CD platforms can be integrated with testRigor to create your own testing environment.

Here are all the features of testRigor, have a look and make an informed decision.

You're 15 Minutes Away From Automated Test Maintenance and Fewer Bugs in Production
Simply fill out your information and create your first test suite in seconds, with AI to help you do it easily and quickly.
Achieve More Than 90% Test Automation
Step by Step Walkthroughs and Help
14 Day Free Trial, Cancel Anytime
“We spent so much time on maintenance when using Selenium, and we spend nearly zero time with maintenance using testRigor.”
Keith Powe VP Of Engineering - IDT
Related Articles

SAP Concur Testing

Concur Technologies, now SAP Concur, is an American software-as-a-service (SaaS) company providing travel and expense management ...

Authorize.net Testing

You need a payment gateway in several scenarios, especially when you are running a business that requires secure, efficient, and ...

KYC Portal CLM Testing

KYC Portal CLM is an award-winning Client Lifecycle Management (CLM) platform designed to streamline and automate the Know Your ...
On our website, we utilize cookies to ensure that your browsing experience is tailored to your preferences and needs. By clicking "Accept," you agree to the use of all cookies. Learn more.
Cookie settings
Privacy Overview
This site utilizes cookies to enhance your browsing experience. Among these, essential cookies are stored on your browser as they are necessary for ...
Read more
Strictly Necessary CookiesAlways Enabled
Essential cookies are crucial for the proper functioning and security of the website.
Non-NecessaryEnabled
Cookies that are not essential for the website's functionality but are employed to gather additional data. You can choose to opt out by using this toggle switch. These cookies gather data for analytics and performance tracking purposes.