Click:
WebElement button = driver.findElement(By.id("submit"));
button.click();
Send Keys:
WebElement input = driver.findElement(By.name("username"));
input.sendKeys("testuser");
Особенности:
Для сложных взаимодействий:
Actions actions = new Actions(driver);
// Клик с паузой
actions.moveToElement(element).pause(500).click().perform();
// Комбинация клавиш
actions.sendKeys(Keys.chord(Keys.CONTROL, "a")).perform();
// Двойной клик
actions.doubleClick(element).perform();
Send Keys через Actions:
actions.sendKeys(inputField, "текст").perform();
Преимущества:
Когда стандартные методы не работают:
JavascriptExecutor js = (JavascriptExecutor)driver;
// Клик через JS
js.executeScript("arguments[0].click();", element);
// Ввод текста через JS
js.executeScript("arguments[0].value='текст';", input);
Особенности:
Специальные клавиши:
// Очистка поля
input.sendKeys(Keys.CONTROL + "a" + Keys.DELETE);
// Tab для перехода
input.sendKeys(Keys.TAB);
// Enter
input.sendKeys(Keys.ENTER);
По символам с задержкой:
for (char ch : "текст".toCharArray()) {
input.sendKeys(String.valueOf(ch));
Thread.sleep(100); // искусственная задержка
}
File upload:
fileInput.sendKeys("/полный/путь/к/файлу.txt");
Метод | Плюсы | Минусы | Когда использовать |
---|---|---|---|
Стандартные | Простота, читаемость | Ограниченная функциональность | Базовые сценарии |
Actions API | Гибкость, сложные сценарии | Более сложный синтаксис | Drag-and-drop, комбинации |
JavaScriptExecutor | Работает "в обход" ограничений | Не имитирует реального юзера | Когда другие методы не работают |
Спец. клавиши | Работа с горячими клавишами | Ограниченный набор возможностей | Навигация по форме |
new WebDriverWait(driver, Duration.ofSeconds(10))
.until(ExpectedConditions.elementToBeClickable(element))
.click();
((JavascriptExecutor)driver)
.executeScript("arguments[0].value='';", input); // Очистка
input.sendKeys("новый текст");
// Для элементов с кастомными событиями
((JavascriptExecutor)driver).executeScript(
"var event = new Event('change');" +
"arguments[0].dispatchEvent(event);", element);
// Пример хорошей практики
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(locator));
wait.until(ExpectedConditions.elementToBeClickable(element));
element.click();
// Проверка результата
wait.until(ExpectedConditions.textToBePresentInElement(result, "ожидаемый текст"));
Профессиональный совет: Для критически важных операций реализуйте оберточные методы с обработкой исключений и повторными попытками, например safeClick()
или typeText()
, которые будут автоматически применять оптимальную стратегию взаимодействия с элементами.