如何验证使用Selenium在javascript对象上调用某个方法?

Kon*_*uda 6 javascript testing selenium mocking assertion

我想用selenium验证在JavaScript对象上调用了某些方法(带参数) - 用JMockit进行模拟,但是在Javascript和selenium中.

不幸的是,对象是严重不透明的不透明网站性能跟踪器,我无法访问其内部,所以嘲笑似乎是我唯一的选择.或者我会错过一些明显的东西?

更新:在考虑之后,在我看来解决方案可能是: - 等待HTML完全加载 - 删除包含性能跟踪器的某些脚本标记 - 创建javascript模拟对象,表现得像跟踪器,但记录调用以供以后使用

Pet*_*ček 2

JsMockito 显然是最强大的解决方案。它适用于每种方法,经过彻底测试并提供了一些很好的附加功能(如提到的交互记录)。

也就是说,如果您不想向项目添加另一个依赖项只是为了使用一次,您可以手动完成这项工作。

window.origWwa = window.wwa;
window.wwa = function() {
    if (arguments[0] === 'Trefferliste Webadresse') {
        window.wwaFired = true;
    }
    window.origWwa.apply(this, arguments);
};
Run Code Online (Sandbox Code Playgroud)

... 做你的工作 ...

if (!window.wwaFired) {
    // do something, either throw an error or console.log("oops")
}
Run Code Online (Sandbox Code Playgroud)

如果要运行的脚本位于标签中<script>并且您选择的浏览器是 Firefox,则可以onafterscriptexecute通过任何函数挂钩该事件。它更短,但我认为你无法确保调用了正确的参数:

document.getElementById('script').onafterscriptexecute = function() {
    window.wwaFired = true;
};
Run Code Online (Sandbox Code Playgroud)