Automated Testing Python Selenium

How to run parallel test with pytest

Parallel test execution involves running multiple tests simultaneously, significantly reducing the total testing duration.

This method spreads tests across various resources, like multiple CPU cores, threads, or different machines, to execute them simultaneously.

Automated Testing Python Selenium

Folder Structure Python Selenium Framework with Pytest

Here’s a recommended project structure for end-to-end (E2E) testing with Python, Selenium, and pytest:

├── tests/
│   ├── e2e/
│   │   ├── test_suite_1/
│   │   │   ├──
│   │   │   └──
│   │   └── test_suite_2/
│   │       ├──
│   │       └──
├── pages/
│   ├──
│   ├──
│   └──
├── utils/
│   ├──
│   ├──
│   └──
├── reports/
│   ├── screenshots/
│   ├── videos/
│   └── test_results.html
├── drivers/
│   ├── chromedriver.exe
│   └── geckodriver.exe
├── pytest.ini
Automated Testing

Types of Testing in Software Development

Understanding the various types of testing is crucial for ensuring that a software product meets the desired standards and functions as expected. Here’s a detailed overview of the key testing methodologies:

Acceptance Testing

Acceptance testing determines whether a feature or system meets customer expectations and requirements. This validation activity answers the question: Are we building the right product? In web applications, this can be automated using Selenium to simulate user behavior, either through record/playback or supported programming languages.

Automated Testing JavaScript Mocha


Mocha is a popular JavaScript testing framework that is widely used for automated testing with Selenium. It provides a structured way to write and organize test cases, making it easier to manage and execute automated tests for web applications.

Automated Testing

Limitation for Automated Testing

8 limitations to consider when testing web applications with Selenium and JavaScript:

  1. Limited to Web Applications: Selenium is primarily designed for testing web applications running in a browser. It cannot directly test desktop or mobile applications without additional tools or frameworks.
  2. Handling Dynamic Elements: Selenium can struggle with handling highly dynamic web elements, such as those with frequently changing IDs or elements generated through JavaScript. Additional coding techniques like dynamic XPath or CSS selectors may be required.
  3. Handling Pop-ups and Dialogs: Selenium has limited capabilities when it comes to handling browser pop-ups, alerts, and dialogs generated by the operating system. Third-party tools like AutoIT may be needed for such scenarios.
  4. Limited Reporting: Selenium does not provide built-in reporting mechanisms for test results. Integration with third-party reporting tools like TestNG or custom reporting solutions is often necessary.
  5. Image and Captcha Testing: Selenium cannot perform image-based testing or handle captchas out of the box. Additional tools like Sikuli or third-party captcha solving services may be required.
  6. Performance Limitations: For large-scale testing scenarios with numerous parallel executions, Selenium’s performance may be limited, and additional infrastructure or cloud-based solutions may be needed.
  7. Browser Compatibility Issues: While Selenium supports multiple browsers, there can be compatibility issues or differences in behavior across different browser versions, which may require additional handling.
  8. Steep Learning Curve: Selenium has a steep learning curve, especially for beginners, as it requires programming skills and understanding of various concepts like locators, waits, and synchronization.
Automated Testing JavaScript Selenium

Selenium & JavaScript

Selenium documentation

Initialize the project

npm init -y
npm i selenium-webdriver