我正在使用selenium测试单页应用.我想测试以确保应用程序只在需要时返回服务器.
在selenium中有没有办法声明没有发生ajax请求或发生了ajax请求并检查ajax URL?
我正在通过寻找加载div的存在来测试它,但这不是我真正想要测试的,并且当在本地机器上进行测试时它不是很稳定,因为请求有时会超过测试执行.
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)