2010-12-02 148 views
0

我已經看過所有的例子,我仍然有一個問題,使用waitForCondition。這是我的代碼。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"); 

現在我得到的錯誤:失蹤;在聲明之前

回答

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 pattern這是編寫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); 
    } 
} 
+0

我理解您的代碼,但這並不能解釋爲什麼我無法使用waitForCondition而沒有出現錯誤。 – John 2010-12-09 18:47:19

相關問題