我正在使用selenium测试单页应用.我想测试以确保应用程序只在需要时返回服务器.
在selenium中有没有办法声明没有发生ajax请求或发生了ajax请求并检查ajax URL?
我正在通过寻找加载div的存在来测试它,但这不是我真正想要测试的,并且当在本地机器上进行测试时它不是很稳定,因为请求有时会超过测试执行.
解决方法
WebDriver中没有直接的方法来检测您的ajax请求.看到这个问题.
https://code.google.com/p/selenium/issues/detail?id=141
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";