我正在尝试使用webdriver-clj包装器在 selenium2/webdriver 项目中掌握 clojure 的窍门。
但是,由于 web 界面是大量脚本化的,我需要有一个选项来等待脚本创建某些元素,而不是在页面加载时。
所以我试图在 clojure 中创建一个等待函数,使用WebDriverWait类按属性测试元素,最好使用 webdriver/by- 函数中的 clojure 语法。
但是,直到方法的服务员类将通用接口 (com.google.common.base.Function) 作为参数,并且由于我的 Java 知识几乎不存在,这对于我刚刚起步的 clojure 技能来说证明太多了。
任何人都具有 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"))
))