当处理AJAX类型的操作时,selenium替代waitForPageToLoad

时间:2011-10-27 22:07:27

标签: ajax selenium command

我正在对我的代码运行一些单元测试,为此我必须下载selenium服务器。现在,selenium包含的一个例子叫做GoogleTest。我把它复制到我的C:\文件夹,并尝试运行它。

起初,我在尝试打开Firefox时遇到错误。似乎硒在相当一段时间内没有更新,因为它支持Firefox 3.5版。找到帮助我的this有用的博客(更改3.5。*为7.0。*)。

现在,我遇到了一个新问题。似乎selenium还没有更新其文档,并且GoogleTest在执行时挂起(this帖子解释了原因)。使用AJAX类型操作时,操作waitForPageToLoad挂起。

现在,我需要等效于此操作,但在处理AJAX操作时...有人知道另一种选择吗?谢谢

3 个答案:

答案 0 :(得分:2)

你试过QAF formerly ISFW了吗?它在内部等待元素以及为ajax提供等待功能以完成js工具包的可能,如dojo,extjs,prototype等

例如,如果AUT使用extjs,那么您可以使用类似

waitService.waitForAjaxToComplete(JsToolkit.EXTJS);

答案 1 :(得分:0)

Selenium中没有waitforajaxtoreturn功能。处理AJAX更改的方式是使用WebDriverWait类在AJAX调用返回时等待特定条件变为true。

例如,对于Google测试,WebDriverWait可能会等待搜索容器出现。

从本质上讲,你必须知道你在等待什么才能继续测试。

答案 2 :(得分:0)

我正在测试一些ajax和JS重页,我一直面临着完全相同的问题。我使用隐式等待来暂停执行ajax代码并将新内容加载到DOM。这是我的代码中的python示例:

from selenium import webdriver
browserHandle = webdriver.Firefox()
browserHandle.implicitly_wait(10)
## assuming dom object loads in 10 seconds
## clear implicit wait
browserHandle.implicitly_wait(0)