Execution of Selenium Script even after Test case fails in java

During automated test execution, it is common to encounter scenarios where Selenium’s native methods fail to interact with certain elements. This usually happens due to one or more of the following reasons:

  1. Overlapping Elements: Another element (like a popup, modal, or sticky header) may cover the target element, preventing Selenium’s .click() from working.
  2. Hidden Elements: The element might be present in the DOM but not visible or displayed at the moment of interaction.
  3. Dynamic Page Behavior: Pages that use JavaScript frameworks (React, Angular, etc.) may render or update elements dynamically, causing a timing mismatch.
  4. Browser-Specific Issues: Certain browsers may behave differently in interpreting Selenium’s native actions.

In such cases, JavaScript can be used as a fallback to perform the same action directly on the element. JavaScript interacts with the DOM directly, bypassing issues like overlays or hidden elements that can block Selenium’s normal actions.

Implementation Using try-catch

We can implement a robust approach using a try-catch block:

  1. Try Selenium’s native action first (e.g., elem.click()).
  2. Catch any exceptions that occur during the Selenium action.
  3. Perform the fallback action using JavaScript to ensure the test continues without failing unnecessarily.

This approach ensures that:

  • Test scripts are more resilient to dynamic and complex web pages.
  • Failures due to minor UI issues do not cause the entire test to fail.
  • Logging can be added in the catch block to track when JavaScript fallback was used, helping with debugging and maintenance.

Example Flow

Attempt Selenium click │ ▼ Success? ──> Yes: Continue test execution │ ▼ No: Exception occurs Use JavaScript click as a fallback │ ▼ Continue test execution

✅Example Script to handle failure selenium event handling:

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class SampleTest {

WebDriver driver = null;

@Test
public void eventHandling() {
    // For Selenium 4.6+, ChromeDriver path setup is automatic
    // For earlier versions, set System property for ChromeDriver
    driver = new ChromeDriver();
    driver.get("https://example.com"); // Replace with your URL
    By locator = By.id("myButton"); // Replace with your actual locator
    WebElement elem = driver.findElement(locator);

    // Call the click method
    clickElement(elem); // Replace with your locator
}

public void clickElement(WebElement elem) {
    try {
        elem.click(); // Try Selenium click first
    } catch (Exception ex) {
        System.out.println("Selenium click failed, using JavaScript click.");
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].click();", elem); // JavaScript fallback
    }
}

}

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Testingtalkslatest.com - A project by CreativeHub IT Solutions.
Contact Us At: support@testingtalkslatest.com
Our Partner websites - Classified Hub , CodesToolbox , CodesToolbox
Scroll to Top
0
Would love your thoughts, please comment.x
()
x