我正在使用selenium测试单页应用。我想测试以确保应用程序只在需要时返回服务器。
在selenium中是否有办法断言没有发生ajax请求或发生了ajax请求并检查ajax URL?
我正在通过寻找加载div的存在来测试它,但这不是我真正想要测试的,并且当在本地机器上测试时它不是很稳定,因为请求有时会超过测试执行。
答案 0 :(得分:0)
WebDriver中没有直接的方法来检测您的ajax请求。看到这个问题。 https://code.google.com/p/selenium/issues/detail?id=141
但我可以想到一个解决方法。 请您的开发人员在页面源中放置一个隐藏的div。每当他们进行ajax调用时,请他们用旗帜更新这个div。
使用WebDriver,您可以轻松阅读此Div的标志并进行断言。
您还可以使用C#或java中的内置WebClient库来实现这一目标。
此博客中详细介绍了此方法。 http://www.ninthavenue.com.au/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";