我正在使用 Selenium 测试一个使用 Dojo 的网络应用程序,它使用 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);
}
然后:
selenium.waitForCondition("window.timeoutCounter == 0");
关于javascript - 如何计算事件的 javascript 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104321/