Я пытаюсь получить представление о clojure в проекте selenium2 / webdriver с использованием оболочки webdriver-clj для веб-драйвера.
Однако, поскольку веб-интерфейс сильно написан на скриптах, янужно иметь возможность ждать, пока определенные элементы не будут созданы скриптом, а не при загрузке страницы.
Поэтому я пытался создать функцию ожидания в clojure, используя WebDriverWait класс для проверки элемента по атрибуту, предпочтительно с использованием синтаксиса clojure из webdriver / by-functions.
Однако класс официанта, пока метод не приобретет универсальный интерфейс (com.google.common.base.Function)в качестве параметра, и так как мои знания Java почти не существуют, это слишком много для моих начинающих навыков clojure.
Любой, у кого есть навыки взаимодействия с clojure-java и идея, как реализовать следующий код Java вClojure, так что он сочетается с веб-драйвером / по синтаксису?
Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) {
return new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
};}
// ...
driver.get("http://www.google.com");
WebDriverWait wait = new WebDriverWait(driver, /*seconds=*/3);
WebElement element =
wait.until(presenceOfElementLocated(By.name("q"))
Результат должен сделать что-то вроде этогое
(defn test []
(let [driver (webdriver/new-driver :firefox)]
(webdriver/get driver "http://127.0.0.1/")
(webdriver/wait-for (webdriver/by-name "button"))
))