Selenium 4.0이상부터는 WebElement의 좌표를 알아낼 수 있습니다.
driver.get("http://www.gmail.com");
WebElement image = driver.findElement(By.id("logo"));
Rectangle rect = image.getRect();
System.out.println("Height : " + rect.getHeight());
System.out.println("Width : " + rect.getWidth());
System.out.println("X Coord : " + rect.getX());
System.out.println("Y Coord : " + rect.getY());
Rectangle
클래스를 이용하여 해당 WebElement의 높이와 길이는 물론 X, Y좌표를 파악할 수 있습니다.
우리는 이 좌표를 이용해서 findElement
로 제대로 잡아내지 못하는 element들에 대해 조작을 해볼 수 있습니다.
브라우저 상에서 스크립트 동작으로 키보드나 마우스 동작을 할 수 있도록 지원하는 Action
클래스를 이용할 수 있습니다.
Actions action = new Actions(driver);
//move mouse to button using XY cood
WebElement link = driver.findElement(By.linkText("Gmail"));
int x = link.getRect().getX();
int y = link.getRect().getY();
action.moveByOffset(x,y).click().perform();
moveByOffset()
을 이용해, 해당 위치로 마우스를 이동시키고, click()
을 실행시켜 해당 element를 클릭하도록 할 수 있습니다.
Action
클래스를 이용한 모든 동작에는, 행위의 마지막에 perform()
메소드를 호출해주어야만 실행됩니다.