</>

Technology

Selenium

Difficulty

Intermediate

Interview Question

How to handle dynamic web elements in Selenium?

Handle dynamic elements using XPath contains(), starts-with(), explicit waits, and stable relative locators.

Answer

Dynamic elements change their attributes on each page load. Here are strategies to handle them:

1. Use contains() in XPath for partial attribute match:

Java
driver.findElement(By.xpath("//*[contains(@id, ''username'')]"));

2. Use starts-with() for predictable prefixes:

Java
driver.findElement(By.xpath("//input[starts-with(@name, ''search'')]"));

3. Use stable attributes (data-, aria-, name):

Java
driver.findElement(By.cssSelector("[data-testid=''login-btn'']"));
driver.findElement(By.cssSelector("[aria-label=''Search'']"));

4. Use text-based XPath:

Java
driver.findElement(By.xpath("//button[text()=''Submit Order'']"));
driver.findElement(By.xpath("//label[contains(text(),''First Name'')]/following-sibling::input"));

5. Use Explicit Wait for elements that load dynamically:

Java
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(
    By.xpath("//div[@class=''result-item'']")
));

6. Relative Locators (Selenium 4):

Java
WebElement emailField = driver.findElement(
    RelativeLocator.with(By.tagName("input")).below(By.id("userLabel"))
);

Follow AutomateQA

Related Topics