Sam*_*and 5 javascript ajax dojo selenium-webdriver
我正在使用Selenium来测试使用Dojo的Web应用程序,它使用java脚本来显示某些元素.在尝试操作页面之前,我想等到所有元素都被显示,但是我遇到了麻烦.
我已经开始等待dojo inFlight变量为0,这表示所有ajax都已完成.这并不总是有效,因为它似乎在事后超时做了一些事情.
我也试过反复寻找元素,但这不太好,因为可能稍后会有一些javascript以某种方式使用这个字段.
所以基本上我想要一个方法(至少在firefox中)查询等待在setTimeout(或setInterval)上运行的javascript我甚至可以通过我自己的函数来处理内置调用的方式,以便跟踪这个.
任何想法或建议赞赏!
JavaScript中的每个函数都可以替换.考虑这样的事情:
window.originalSetTimeout = window.setTimeout;
window.setTimeout = function(func, delay, params) {
window.timeoutCounter++;
window.originalSetTimeout(window.timeoutCallback, delay, [func, params]);
}
window.timeoutCallback = function(funcAndParams) {
window.timeoutCounter--;
func = funcAndParams[0];
params = funcAndParams[1];
func(params);
}
Run Code Online (Sandbox Code Playgroud)
然后:
selenium.waitForCondition("window.timeoutCounter == 0");
Run Code Online (Sandbox Code Playgroud)