0

我正在运行一个脚本,我知道一个警报会(大部分)无害地弹出,说明某个整数$x sequence(s) deleted.在哪里。$x我想让 WebDriver 期待警报并放弃它,而不会使测试用例失败。为此,我正在使用$sel->get_alert(). 我尝试像这样将正则表达式传递给它:

use strict;
use warnings;
$sel->alert_is("id=regexp:/\d+ sequence\(s\) deleted\./");

但我得到的错误说

Unrecognized escape \d passed through at script.pl line 44.
.
.
not ok 14 - get_alert, 'id=regexp:'/d+ sequence(s) deleted./'
Failed test 'get_alert, 'id=regexp:'/d+ sequence(s) deleted./''
at script.pl line 44.
      got: '0 sequence(s) deleted.'
  expected: 'id=regexp:/'d+ sequence(s) deleted./'

当我尝试使用 glob 而不是正则表达式时,我得到了类似的结果。如果我猜出整数并像这样传递它

$sel->alert_is("0 sequence(s) deleted.");

它工作正常,所以我很确定 Selenese 是可靠的。当我在谷歌上寻找解决方案时,我得到了很多不同的地方,人们复制并粘贴了 WWW::Selenium 的 CPAN 列表,这没有给出示例。

4

1 回答 1

1

好吧,如果“你知道”警报会弹出,那么为什么不直接使用dismiss_alert呢?从文档:

说明:关闭当前显示的警报对话框。对于comfirm()prompt()对话框,这相当于单击“取消”按钮。对于alert()对话框,这相当于单击“确定”按钮。

例子:
$driver->dismiss_alert;

或者你可以使用accept_alert. 从文档:

说明:接受当前显示的警报对话框。通常,这相当于单击对话框中的“确定”按钮。

例子: $driver->accept_alert;

于 2014-08-22T21:04:53.717 回答