Selenium测试Ajax应用程序中的主要问题
主要的问题可能就是页面加载的问题,有时候页面没有加载成功导致对象找不到,从而导致脚本不能运行。
主要使用的方式是,在测试的全局中设置一个页面的加载时间,如果timeout就是没有找到对象。如下参考:
http://chon.techliminal.com/ajax_wait/#/intro这个可以使用在所有的页面跳转中。
但是对于在测试中交互的对象的显示可以使用如下的代码解决。

/**wait for the ajax to be completed * inspired by the the blow url: * @link http://hedleyproctor.com/2012/07/effective-selenium-testing/ * @link http://stackoverflow.com/questions/3272883/how-to-use-selenium-2-pagefactory-init-elements-with-wait-until * @author huchan * @param timeoutInSeconds */ public void waitForAjaxPresent(int timeoutInSeconds) { if (driver instanceof JavascriptExecutor) { final long currentbowserstate=(Long)executeJS("return return jQuery.active;"); logger.info("Current ajax active code is:"+currentbowserstate); WebDriverWait wdw=new WebDriverWait(driver, timeoutInSeconds); ExpectedCondition<Boolean> ec=new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver driver) { // TODO Auto-generated method stub long newpagestate=(Long) executeJS("return return jQuery.active;"); logger.debug("the new ajax active code is:"+newpagestate); return (newpagestate==0L); } }; boolean loaded=wdw.until(ec); logger.debug("finally the ajax had been loaded status is:"+loaded); } else{ logger.error("Web driver: " + driver + " cannot execute javascript"); } }
基本上综合以上的方法,可以解决你的ajax加载不能识别对象的问题。
作者:高级测试开发网
博客地址:https://seniortesting.club
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
Selenium
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?