我正在使用 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";
关于c# - 检测selenium中的ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530342/