Getting and setting attributes in Selenium Java - Build an Automation Script
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.time.Duration; public class AttributeTest { private WebDriver driver; private WebDriverWait wait; @BeforeMethod public void setUp() { driver = new ChromeDriver(); wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } @Test public void testGetAndSetAttributes() { driver.get("https://example.com/testpage"); // Wait for the input field to be visible WebElement usernameInput = wait.until( ExpectedConditions.visibilityOfElementLocated(By.id("username")) ); // Get the placeholder attribute String placeholder = usernameInput.getAttribute("placeholder"); Assert.assertEquals(placeholder, "Enter username", "Placeholder text should match"); // Set the value attribute by sending keys usernameInput.clear(); usernameInput.sendKeys("testuser"); // Get the updated value attribute String value = usernameInput.getAttribute("value"); Assert.assertEquals(value, "testuser", "Value attribute should be 'testuser'"); } @AfterMethod public void tearDown() { if (driver != null) { driver.quit(); } } }
This test script uses Selenium WebDriver with Java and TestNG to automate the manual test case.
Setup: The @BeforeMethod initializes the ChromeDriver and explicit wait.
Test: The test navigates to the page, waits for the input field with id 'username' to be visible, then retrieves its 'placeholder' attribute and asserts it matches the expected text 'Enter username'.
Next, it clears any existing text and sends the keys 'testuser' to set the value. It then retrieves the 'value' attribute and asserts it equals 'testuser'.
Teardown: The @AfterMethod closes the browser to clean up.
This approach uses explicit waits to avoid timing issues, uses By.id locator for reliability, and TestNG assertions for clear validation messages.
Now add data-driven testing with 3 different usernames to set and verify the value attribute.