2013-01-17 24 views
1

是否真的有必要使用waitForElement或另一个等待...如果我测试的JavaScript单页面应用程序加载ajax状态?我必须先于waitForElement之前的每个动作(例如:点击,键入)。太多waitforelement

+0

还有什么你希望做什么?使用Ajax时,事情不会总是同步发生,页面可能会触发请求并在一分钟后不会返回任何内容,然后此响应会导致出现按钮。除了不断地轮询页面外,还有什么可以帮助你? – Arran

+0

这是完全有效的http://seleniumhq.org/docs/02_selenium_ide.jsp#the-andwait-commands,但在我的测试行动之前的每一行是waitFor ... – RobertW

+0

我想这就是为什么一些Selenium用户讨厌Ajax,但这不是硒的错;) –

回答

0

是的,它是必要的Ajax。但是,如果你使用“不要重复自己”的原则,这不是问题。您应该创建如下方法:

clickWithExplicitWait(lctr) { 
    waitForElementPresent(lctr)//uses ajax wait timeout 
    driver.click(lctr)//uses implicit wait timeout 
} 

driver.click()使用隐式等待。因此,您可以为隐式等待和明确的“元素等待”指定不同的超时值。 您可以使用org.openqa.selenium.support.ui.ExpectedConditions包实现waitForElementPresent()或其他类似的方法。

如果你需要等待的行动后出现其它元素,使用类似:

clickAndWait(lctrToClick, lctrToWait) { 
    driver.click(lctrToClick) 
    waitForElementPresent(lctrToWait) 
}