我该如何拦截Selenium错误?

时间:2013-09-01 18:12:27

标签: customization selenium-ide intercept

在开发Selenium扩展时,我有脚本来验证对失败案例的正确处理。不幸的是,我必须在IDE中逐个执行这些命令,并手动检查每个错误消息。我想要做的是定义一个自定义的Selenium命令,我可以在每个命令故意以某种方式失败之前插入它。例如:willFail | expected-error-text。

换句话说,我想改变Selenium命令完成行为,这样如果下一个命令抛出给定的错误消息,那么结果就是成功并且脚本继续。但如果成功或抛出不同的错误,则脚本会因错误而停止。

我想这将涉及设置观察者功能和/或拦截Selenium功能。我希望问题是:

  • 如何/在何处进行初始化。相关的Selenium对象很难找到。
  • 返回什么/何时改变结果。
  • 通过改变结果还有其他东西不同步吗?

PowerDebugger扩展允许您在发生故障时暂停IDE,然后继续。所以我怀疑那里的方法是什么。但我无法弄清楚它是如何与Selenium命令处理挂钩的。 Samit Badle,你在外面吗?

我使用的是Selenium IDE 2.2.0。

1 个答案:

答案 0 :(得分:0)

通过一些实验,我发现函数TestLoop.resume()负责确定每个命令的结果。 它在chrome/content/selenium-core/scripts/selenium-executionloop.js中定义。 此函数执行命令,并停止脚本或允许其继续。

要更改此行为,Selenium扩展可以使用自定义版本临时替换此功能。要完成此操作,请保存editor.selDebugger.runner.IDETestLoop.prototype.resume的引用,并将其替换为自定义函数。然后,自定义函数应该恢复本机函数,并根据需要执行命令执行。