WebDriver API. Сложные взаимодействия.
Selenium WebDriver позволяет имитировать действия пользователя, начиная от простых движений мыши до сложных, перетягивание объета. Все это позволяет реализовать класс Actions. Так же разработчики позаботились о том, чтобы мы могли создавать цепочку действий, используя этот класс. Рассмотрим некоторые возможности на следующих примерах.
Двойной щелчёк на элементе:
@Test
public void testDoubleClick() throws Exception
{
WebDriver driver = new ChromeDriver();
driver.get("http://dl.dropbox.com/u/55228056/DoubleClickDemo.html");
WebElement message = driver.findElement(By.id("message"));
//Verify color is Blue
assertEquals("rgb(0, 0, 255)",
message.getCssValue("background-color").toString());
Actions builder = new Actions(driver);
builder.doubleClick(message).build().perform();
//Verify Color is Yellow
assertEquals("rgb(255, 255, 0)",
message.getCssValue("background-color").toString());
driver.close();
}
Перетягивание объекта:
@Test
public void testDragDrop() {
driver.get("http://dl.dropbox.com/u/55228056/DragDropDemo.html");
WebElement source = driver.findElement(By.id("draggable"));
WebElement target = driver.findElement(By.id("droppable"));
Actions builder = new Actions(driver);
builder.dragAndDrop(source, target).perform();
try
{
assertEquals("Dropped!", target.getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
Другие полезные методы
Клик левой кнопкой мыши:
click()
click(WebElement onElement)
Клик с удержанием:
clickAndHold()
clickAndHold(WebElement onElement)
Правый клик:
contextClick()
contextClick(WebElement onElement)
Пример работы с контекстным меню:
Actions builder = new Actions(driver);
builder.contextClick(webElement).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.RETURN).build().perform();
Перетаскивание со смещением:
dragAndDropBy(WebElement source, int xOffset, int yOffset)
Нажатие и удержание клавиши и дальнейшее ее отпускание:
keyDown(Keys theKey) / keyDown(WebElement element, Keys key)
keyUp(Keys theKey) / keyUp(WebElement element, Keys key)
Смещение мыши:
moveByOffset(int xOffset, int yOffset)
Перемещение мыши на элемент:
moveToElement(WebElement toElement)
moveToElement(WebElement toElement, int xOffset, int yOffset)
Отпускание клавиши мыши:
release()
release(WebElement onElement)
//Вариант:
sendKeys(Keys.NULL)
Набор текста на клавиатуре:
sendKeys(java.lang.CharSequence... keysToSend)
sendKeys(WebElement element, java.lang.CharSequence... keysToSend)
Построение цепочки действий:
build()
Выполнение построенной цепочки действий:
perform()