我想用 selenium 验证是否调用了某些方法(带参数) JavaScript 对象 - 一种使用 JMockit 的期望模拟,但在 Javascript 和 selenium 中。
不幸的是,对象是被严重混淆的不透明网站性能跟踪器,我无法访问它的内部结构,所以在我看来,模拟是唯一的选择。还是我漏掉了一些明显的东西?
更新:经过思考,在我看来解决方案可能是: - 等待 HTML 完全加载 - 删除某些包含性能跟踪器的脚本标签 - 创建 javascript 模拟对象,其行为类似于跟踪器,但记录调用供以后使用
最佳答案
好的,终于明白了。选择的模拟框架是:jsmockito 和 jshamcrest(jsmockito 需要它)- http://jsmockito.org/
这是小菜一碟。
监视现有对象:
<tr>
<td>storeEval</td>
<td>window.wwa = JsMockito.spy(window.wwa$); </td>
<td>mockedWipe</td>
...做任何必要的
并验证它:
<tr>
<td>storeEval</td>
<td>JsMockito.verify(window.wwa$).logAction('Trefferliste Webadresse');</td>
<td></td>
注意事项:
- 窗口作用域变量在命名空间 window
- 可以忽略验证步骤的评估值,因为如果调用不满足,您会得到异常
- 不要忘记将 js 库添加到您的 selenium ide 或测试驱动程序中
关于javascript - 如何验证是否使用 Selenium 在 javascript 对象上调用了某些方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11140856/