1

我通过一个 .suite 文件运行我的所有脚本,大致如下形式:

_include("variables.sah");
_include("functions.sah");

$a = 0;
while($a<3) {
    try {
        _navigateTo($loginpage);
        login($user, $password);
        myFunction();
        $a = 3
    }
    catch (e){
        _navigateTo($loginpage);
        login($user, $password);
        //undo changes made by myFunction()
        ...
        $a++;
        if($a<3) {
            _log("Try again");
        }
        else {
            _log("Skip to next script");
        }
    }
}

function myFunction() {
    //do this
    ...
}

现在所有这些都运行得很好,除了一件事:当它遇到一个在正常情况下会中止所有脚本的缺失元素时它不会重复。它只是忽略错误并继续执行该套件的下一行。如果我不知道哪个部分(如果有)会失败以及何时失败,如何让我的脚本在继续之前重试 2 次?

4

1 回答 1

1

我猜你的代码看起来不错。

我能想到的一件事是在 catch 块中引发了异常。

我制作了一个按预期工作的简单脚本:

var $errors = 0;

function trySet() {
  try {
    _setValue(_textbox("does not exist"), "");
  } catch ($e) {
    $errors++
    _alert($errors);
  }
}


for (var $i = 0; $i < 3; $i++) {
  trySet();
}

更好地找出您的脚本究竟在哪里遇到问题,并相应地使用单独的 try-catch 块来处理它们。你如何处理异常取决于你,但我想它会是这样的:

try {
  login()
} catch ($e) {
  // login failed, try again
}
try {
  myfunction()
catch($e) {
  revertMyFunction()
  //try again
}

也许定义您自己的异常以对错误做出不同的反应,请查看此以获取有关自定义异常的更多信息:JavaScript 中的自定义异常

问候沃尔米

于 2014-04-24T07:11:33.857 回答