来自http://seleniumhq.org/docs/03_webdriver.jsp,它显示以下Java示例代码
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
是否可以在CFML中编写上面的代码,可能是在CF10 dynamic proxy的帮助下?
如果我们可以让CF10的closure使用上面的代码示例,那将是非常棒的,但是由于预期的Java接口和Java返回类型,它似乎不会起作用,我是否正确?
答案 0 :(得分:3)
我不确定哪个是更好的选择。但是可以使用动态代理。只需创建一个实现ExpectedCondition
接口的cfc:
component {
public boolean function apply(Any d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
}
然后创建代理的实例并将其传递给WebDriverWait
<cfscript>
driver = createObject("java", "org.openqa.selenium.firefox.FirefoxDriver").init();
driver.get("http://www.google.com");
by = createObject("java", "org.openqa.selenium.By");
element = driver.findElement(By.name("q"));
WriteDump("Page title is: "& driver.getTitle());
element.sendKeys(["Cheese!"]);
element.submit();
conditionProxy = createDynamicProxy("test.ExpectedConditionProxy", ["org.openqa.selenium.support.ui.ExpectedCondition"]);
WebDriverWait = createObject("java", "org.openqa.selenium.support.ui.WebDriverWait");
WebDriverWait.init(driver, 10).until( conditionProxy );
WriteDump("Page title is: "& driver.getTitle());
driver.quit();
</cfscript>