在selenium中检测ajax请求

Not*_*ple 7 c# ajax selenium

我正在使用selenium测试单页应用.我想测试以确保应用程序只在需要时返回服务器.

在selenium中有没有办法声明没有发生ajax请求或发生了ajax请求并检查ajax URL?

我正在通过寻找加载div的存在来测试它,但这不是我真正想要测试的,并且当在本地机器上进行测试时它不是很稳定,因为请求有时会超过测试执行.

joi*_*aad 0

WebDriver 中没有直接的方法来检测您的 ajax 请求。看到这个问题。 https://code.google.com/p/selenium/issues/detail?id=141

但我可以想到一个解决办法。要求您的开发人员在页面源代码中放置一个隐藏的 div。每当他们进行 ajax 调用时,请要求他们使用标志更新此 div。

使用WebDriver,您可以轻松读取此Div的标志并放置您的断言。

您还可以使用 C# 或 java 中内置的 WebClient 库来实现此目的。

本博客详细描述了这种方法。 https://rogerkeays.com/how-to-get-the-http-status-code-in-selenium-webdriver

如果你只是想看看是否有ajax请求发生,你可以使用webDriver中的javascriptexecutor类。看下面的代码

IJavaScriptExecutor jsScript = driver as IJavaScriptExecutor;
if(!(Boolean)jsScript.ExecuteScript("return jQuery.active == 0"))
retrun "ajax request occured";
Run Code Online (Sandbox Code Playgroud)

  • 这有点遗憾,它不能更好地支持这一点,但我真的不想仅仅因为我想测试它而将 DOM 放入其中。 (3认同)