1
是否真的有必要使用waitForElement
或另一个等待...如果我测试的JavaScript单页面应用程序加载ajax状态?我必须先于waitForElement
之前的每个动作(例如:点击,键入)。太多waitforelement
是否真的有必要使用waitForElement
或另一个等待...如果我测试的JavaScript单页面应用程序加载ajax状态?我必须先于waitForElement
之前的每个动作(例如:点击,键入)。太多waitforelement
是的,它是必要的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)
}
还有什么你希望做什么?使用Ajax时,事情不会总是同步发生,页面可能会触发请求并在一分钟后不会返回任何内容,然后此响应会导致出现按钮。除了不断地轮询页面外,还有什么可以帮助你? – Arran
这是完全有效的http://seleniumhq.org/docs/02_selenium_ide.jsp#the-andwait-commands,但在我的测试行动之前的每一行是waitFor ... – RobertW
我想这就是为什么一些Selenium用户讨厌Ajax,但这不是硒的错;) –