1

来自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 的动态代理的帮助下?

如果我们可以让 CF10 的闭包与上面的代码示例一起工作,那就太棒了,但由于预期的 Java 接口和 Java 返回类型,它似乎不会工作,对吗?

4

1 回答 1

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>
于 2013-01-23T03:14:31.983 回答