Нужно автоматизировать нажатие на кнопку подтверждения в сплывающем окне. С помощью стандартного
driver.click()
- это сделать не получается, т.к. при простом клике popup окно не появляется, нужно еще и мышу держать над ссылкой. Попробовал использовать класс AdvancedUserInteractions, но тут тоже возникла проблема. Метод clickAndHold() - отрабатывает весьма успешно, после чего сессия браузера просто висит, до тех пор пока, вручную не пошевелишь мышью, только после этого метод release() выполняется и соответственно появляется всплывающее окно и тест проходит. Может быть я делаю что-то не так. Как заставить метод release() выполнятся непосредственно после метода clickAndHold() без всякой помощи из вне?
Пытался использовать этот вариант. Робот класс может только кликнуть по координатам.
Этот вариант тоже подходит, но тогда появляется другого рода задача - нужно как-то получить абсолютные координаты элемента.
Web Driver не имеет методов getElementPositionLeft(), getElementPositionTop(), которые есть у Selenium RC.
Пытался сделать с помощью javascript, но функция возвращает null.
public void robotMouseMoveAndClick() throws Exception{
Robot robot = new Robot();
// GET ELEMENT POSITION
int topElementPosition = (Integer)(executeJavascript(driver, "document.getElementById('cart-clear-button').style.top"));
int leftElementPosition = (Integer)(executeJavascript(driver, "document.getElementById('cart-clear-button').style.left"));
System.out.println("TOP: "+ topElementPosition);
System.out.println("LEFT: "+ leftElementPosition);
// SET THE MOUSE X Y POSITION
robot.mouseMove(topElementPosition, leftElementPosition);
// LEFT CLICK
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
Проблема все еще актуальна, буду рад услышать любые варианты решения проблемы.
public void robotMouseMoveAndClick() throws Exception{
Robot robot = new Robot();
// GET ELEMENT POSITION
int leftElementPosition = driver.findElement(By.xpath(elementLocator)).getLocation().getX();
int topElementPosition = driver.findElement(By.xpath(elementLocator)).getLocation().getY();
System.out.println("LEFT: "+ leftElementPosition);
System.out.println("TOP: "+ topElementPosition);
// SET THE MOUSE X Y POSITION
robot.mouseMove(leftElementPosition, topElementPosition);
// LEFT CLICK
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}