等待直到XHR对Selenium的请求完成

时间:2018-06-19 11:54:18

标签: selenium-webdriver xmlhttprequest cucumber-java

根据我的判断,似乎没有通过搜索找到任何简单的答案。

场景

JSF页面包含一个表单。有一个dropdown元素,当发生更改时,它会发送XHR(而不是jQuery)Ajax调用来更新DOM。对于所有意图而言,更新都是难以区分的-它仍然具有相同的字段,但是会重新加载它们。由于所有这些都是通过JSF完成的,因此最好假定我无法修改/修改页面的JS或功能。

使用硒/黄瓜,我需要执行一个步骤,它将“等待”直到XHR完成。该不使用jQuery ,因此jQuery.active在整个请求中返回0

我也不能在任何DOM元素上使用任何“等到”方法,因为它们不会改变-在XHR完成后只需“重新构建”即可。也没有其他加载“提示”,例如Spinner。

Chrome中的开发人员工具似乎可以在“网络”中计时XHR的开始和完成时间,但是我不知道是否通过另一层完成-而不是我可以通过控制台返回的任何值。

到目前为止,我发现的任何方法似乎都依赖于JS注入-这将不可能吗?

1 个答案:

答案 0 :(得分:1)

根据评论,此问题通过等待直到 ExpectedConditions.stalenessOf( getWebDriver().findElement( By.id( webElement ) ) ),然后等待直到 ExpectedConditions.visibilityOfElementLocated( By.id( webElement )