0

我查看了所有示例,但在使用 waitForCondition 时仍然存在问题。这是我的代码。

WebDriverBackedSelenium seleniumWD = new WebDriverBackedSelenium(driver, "http://www.x.com");

seleniumWD.waitForCondition("seleniumWD.isElementPresent(\"fullname\");", "5000");

我收到错误消息:seleniumWD 未定义。所以我把它改成:

WebDriverBackedSelenium seleniumWD = new WebDriverBackedSelenium(driver, "http://www.x.com");

seleniumWD.waitForCondition("boolean ok = seleniumWD.isElementPresent(\"fullname\");", "5000");

现在我得到了错误:missing ; 声明之前

4

1 回答 1

1

看来您正在使用基于 Selenium 2/ WebDriver 的测试中的 Selenium JS 对象。您应该使用 WebDriver 提供的 ExpectedCondition 和 Wait 类,而不是使用 WebDriverBackedSelenium。在您的情况下,假设fullname是您正在等待的元素的 id,您的代码应如下所示:

WebElement element;
ExpectedCondition<Boolean> e = new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver d) {
        element = d.findElement(By.id("fullname"));
        return Boolean.TRUE;
    }
};

Wait<WebDriver> w = new WebDriverWait(driver, timeOutInSeconds);
w.until(e);

这是一段非常大的代码,因此您应该考虑使用Page Objects 模式,这是编写 Selenium 测试的最佳实践之一。包含您的字段的示例页面将如下所示:

public class MyPage {
    @FindBy(id="fullname")
    private WebElement fullName;

    public MyPage(WebDriver driver) {
        PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);
    }

    public void setFullName(String value) {
        fullName.clear();
        fullName.sendKeys(value);
    }
}
于 2010-12-07T11:03:27.413 回答