我試圖在selenium2/webdriver項目中使用webdriver-clj wrapd for webdriver獲取clojure的掛起。在Clojure中實現Java通用接口
但是,由於web界面大量編寫腳本,我需要有一個選項可以等待,直到腳本創建某些元素爲止,而不是在頁面加載時。
所以我試圖在clojure中創建一個等待函數,使用WebDriverWait類來測試元素的屬性,最好使用webdriver/by-函數的clojure語法。
但是,直到方法的服務器類接受一個通用的接口(com.google.common.base.Function)作爲參數,並且由於我的Java知識幾乎不存在,這對於我的羽翼未豐技能證明太多了。
任何與clojure-java互操作技巧和想法如何在clojure中實現以下java代碼,以便它與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"))
))