【问题标题】:Clicking 'OK' on alert or confirm dialog through jquery/javascript?在警报上单击“确定”或通过 jquery/javascript 确认对话框?
【发布时间】:2011-10-09 19:05:18
【问题描述】:

我正在考虑用backbone.js 和jquery 编写一些UI 测试。它们可能不是最好的方法,但这是我正在考虑的事情 - 通过纯代码自动化测试而无需记录和回放。

使用这种方法唯一让我摸不着头脑的是:在某些“用例流程”(执行)中,会出现确认/警报对话框。我想单击“确定”并继续流程 - 这甚至可以通过纯 JavaScript 代码实现吗?怎么样?

注意:我确实知道存在 GUI 测试库,但如果可能的话,我想知道如何仅使用 jQuery/javascript 代码来实现。

【问题讨论】:

  • +1 用于尝试不同的 UI 测试方法

标签: javascript jquery testing click automated-tests


【解决方案1】:

据我所知,如果您使用标准的alert() 调用,则无法触发“确定”点击,因为警报调用会阻塞正常的 JS 事件循环。

但是您应该能够将window.alertwindow.confirm 替换为您自己的不执行任何操作的函数:

window.alert = function() {
    console.log.apply(console, arguments);
};

在加载其他任何内容之前将它们放在 JS 的顶部,随后对 alert()confirm() 的任何调用都会改为调用它们。

【讨论】:

  • hmmmm...但是我必须在整个代码中进行更改。这些警报不是调试,而是应用程序的实际部分,在它的早期增量中。稍后它们将更改为自定义警报...我猜这是不可能的
  • 不,关键是如果您处于调试模式,您只需进行一次此更改,上面的代码替换所有后续调用alert()
  • 啊啊啊我明白了!甜...可以做同样的确认吗?我猜是的...... :)
  • Selenium Web 应用程序测试系统正是这样做的。它还记录警报、确认或提示,并让您验证您得到了预期的结果,而不是其他内容(,“用户已删除。”,而不是“第 25 行中未找到对象。”)。 Google for Selenium 和 getAlert 一些指针。
  • 如此简单却又如此难以捉摸:)
【解决方案2】:

你想要这样的东西:

<script type="text/javascript">
var oldConfirm = confirm;
var oldAlert = alert;

confirm = function() {
    return true;
};
alert = function() {
    return true;
}

var response = confirm("Is this OK?");

if (response) {
    alert("Yay");
}
else {
    alert("Boo");
}

confirm = oldConfirm;
alert = oldAlert;
</script>

【讨论】:

  • 我不知道它会有什么帮助...你能用一些解释来增加“意图”吗? :)
  • 是的,对不起。 window.confirm 和 confirm 指的是同一个东西。
  • 在 alnitak 澄清了一些事情之后,我理解了你代码的意图:)
猜你喜欢
  • 2011-11-08
  • 2011-08-10
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多