Dynamic Controls

Add and remove elements dynamically to test presence and waits.

How to test
// Java
driver.findElement(By.id("dynamic_add")).click();
new WebDriverWait(driver, Duration.ofSeconds(5)).until(
    ExpectedConditions.presenceOfElementLocated(By.id("dynamic_input"))
);

# Python
driver.find_element(By.ID, "dynamic_add").click()
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, 'dynamic_input')))

// Java - Full Test
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
driver.findElement(By.id("dynamic_add")).click();
WebElement dynamicInput = wait.until(
    ExpectedConditions.presenceOfElementLocated(By.id("dynamic_input"))
);
assert dynamicInput.isDisplayed();
dynamicInput.sendKeys("Dynamic text");
assert dynamicInput.getAttribute("value").equals("Dynamic text");
driver.findElement(By.id("dynamic_remove")).click();
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("dynamic_input")));

# Python - Full Test
wait = WebDriverWait(driver, 5)
driver.find_element(By.ID, "dynamic_add").click()
dynamic_input = wait.until(EC.presence_of_element_located((By.ID, "dynamic_input")))
assert dynamic_input.is_displayed()
dynamic_input.send_keys("Dynamic text")
assert dynamic_input.get_attribute("value") == "Dynamic text"
driver.find_element(By.ID, "dynamic_remove").click()
wait.until(EC.invisibility_of_element_located((By.ID, "dynamic_input")))

// Java - Alternative Solution
driver.findElement(By.id("dynamic_add")).click();
new WebDriverWait(driver, Duration.ofSeconds(5)).until(
    ExpectedConditions.presenceOfElementLocated(By.id("dynamic_input"))
);

# Python - Alternative Solution
driver.find_element(By.ID, "dynamic_add").click()
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, "dynamic_input")))


Tester Task
  1. Click the Add Input button.
  2. Wait until the input with id dynamic_input is present.
  3. Enter Dynamic text in the dynamic input.
  4. Verify the dynamic input value is Dynamic text.
  5. Click the Remove Input button.
  6. Wait until the dynamic input is removed or hidden.