Element dimensions and location in Selenium Java - Build an Automation Script
import org.openqa.selenium.By; import org.openqa.selenium.Dimension; import org.openqa.selenium.Point; 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.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; import java.time.Duration; public class ElementDimensionsLocationTest { private WebDriver driver; private WebDriverWait wait; @BeforeEach public void setUp() { driver = new ChromeDriver(); wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } @Test public void testElementDimensionsAndLocation() { driver.get("https://example.com/login"); // Wait for username input to be visible WebElement usernameInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username"))); WebElement passwordInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("password"))); WebElement loginButton = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginBtn"))); // Get dimensions of username input Dimension usernameSize = usernameInput.getSize(); int width = usernameSize.getWidth(); int height = usernameSize.getHeight(); // Get location of login button Point loginLocation = loginButton.getLocation(); int x = loginLocation.getX(); int y = loginLocation.getY(); // Assertions assertEquals(250, width, "Username input width should be 250 pixels"); assertEquals(40, height, "Username input height should be 40 pixels"); assertTrue(x > 100, "Login button x coordinate should be greater than 100"); assertTrue(y > 200, "Login button y coordinate should be greater than 200"); } @AfterEach public void tearDown() { if (driver != null) { driver.quit(); } } }
This test opens the login page URL using ChromeDriver.
It waits explicitly for the username input, password input, and login button to be visible to avoid timing issues.
Then it gets the size (width and height) of the username input field using getSize() and the location (x and y coordinates) of the login button using getLocation().
Assertions check that the username input width is exactly 250 pixels and height is 40 pixels, matching the expected design.
It also asserts that the login button's x coordinate is greater than 100 and y coordinate is greater than 200, ensuring it is positioned correctly on the page.
The test uses JUnit 5 assertions for clear pass/fail results.
Finally, the @AfterEach method closes the browser to clean up.
Now add data-driven testing with 3 different login page URLs to verify element dimensions and location on each.