webdriver用のwebdriver-cljラッパーを使用して、selenium2/webdriverプロジェクトでclojureのコツをつかもうとしています。
ただし、Webインターフェイスは高度にスクリプト化されているため、ページの読み込みではなく、スクリプトによって特定の要素が作成されるまで待機するオプションが必要です。
そこで、 WebDriverWaitクラスを使用して属性ごとに要素をテストし、できればwebdriver / by-functionsのclojure構文を使用して、clojureで待機関数を作成しようとしました。
ただし、メソッドまでのウェイタークラスはジェネリックインターフェイス(com.google.common.base.Function)をパラメーターとして受け取り、Javaの知識はほとんど存在しないため、これは私の駆け出しのclojureスキルにはあまりにも多くのことを証明しています。
clojure-java相互運用スキルを持ち、次のJavaコードをclojureに実装して、webdriver / by-syntaxと組み合わせる方法を知っている人はいますか?
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"))
))