当前位置: 首页 > 知识库问答 >
问题:

节点。js:为什么在“try catch”子句的“catch”块中没有返回我的期望值?

刘绍晖
2023-03-14

我有一个测试网站功能的Node.js项目。它利用Webdriver.iov4和摩卡/柴。

我创建了一个函数,用于检查页面上是否存在超时1分钟的元素。如果元素存在,它应该返回true。如果没有,它应该返回false

我使用相同的函数来测试页面上是否没有元素。在这种情况下,我希望函数返回false。但是,函数不会返回false,而是抛出超时错误,并且既不返回true也不返回false。这很奇怪,因为我在try-catch子句的catch块中包含了一个returnfalse语句。

在这个项目中,当一个函数失败时,我将得到一个消息,例如预期false等于true预期未定义等于true。在这种情况下,我得到消息超时60000ms。尝试减少运行时间或增加测试规格(http://webdriver.io/guide/testrunner/timeouts.html)的超时;如果返回Promise,请确保它解决。

是的,我期待element.waitForExist()抛出一个超时错误,但是这个错误应该通过返回false来处理。程序确实按照console.log(ex)行的预期显示错误日志,但不会返回false

为什么我的函数在这种情况下不返回false?返回正确值的最佳/最简单的方法是什么?谢谢你!

这是我的职责:

checkElementExists: {
        value: function (element) {
            try {
                element.waitForExist();
                if (element.isExisting()) {
                    return true;
                } else {
                    return false;
                }
            } catch (ex) {
                console.log(ex);
                return false;
            }
        }
    }

预期:如果页面上存在元素,则函数返回true。如果页面上不存在该元素,则函数返回false

实际:如果页面上存在元素,函数返回true。如果页面上不存在该元素,则抛出Timeout错误,但既不返回true,也不返回false


共有1个答案

尉迟雅昶
2023-03-14

如果您仍然存在价值无法返回的问题,请尝试以下方法。我不确定为什么catch无法返回,但您可以尝试以下方法吗:

checkElementExists: {
    value: function (element) {
        let val = false;
        try {
            element.waitForExist();
            if (element.isExisting()) {
                val = true;
            } 
        } catch (ex) {
            console.log(ex);
        }
        return val;
    }
}
 类似资料:
  • 问题内容: 大家。我有一个关于java中返回值的菜鸟问题。这是我的代码。 Eclipse报告“此方法必须返回long类型的结果”错误。但是我确实在try块中返回了提示。eclipse建议在try / catch块之后添加一个返回值,这会破坏逻辑。你能告诉我这里有什么问题吗?谢谢。 问题答案: 当一个被抛出的返回值是不确定的。引发异常时,控制权立即传递给异常处理程序。在这种情况下,您记录错误。然后控

  • 我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。

  • 我脑海中的东西告诉我,我在这里错过了一些明显的东西。 我正在将一个现有的java项目与一个第三方api进行集成,该api使用API密钥的md5散列进行身份验证。它对我不起作用,在调试过程中,我意识到我生成的散列与他们提供的例子不匹配。我发现一些网站从字符串中创建MD5哈希来检查他们的例子,就我所知,我错了,他们是对的。 例如,根据这个网站,字符串“hello”生成“5d41402abc4b2a76

  • 问题内容: 我编写了一个打印表格的程序。我没有在主函数中包含返回语法,但是无论何时我键入echo $?它显示12。 我的源代码: 我尚未编写return 12,但每次执行程序时它仍返回12。 谢谢。 问题答案: 正如swegi所说,这是未定义的行为。 正如史蒂夫·杰索普(Steve Jessop)等人所说,在C89之前,它是一个未指定的值,并在C99中指定(观察到的行为与C99不符)。 在大多数环

  • 如果在表中插入了项,然后我编写了一个查询,例如,为什么结果不是按照我期望的顺序?

  • 问题内容: 我想打印根节点的子元素。这是我的XML文件。 根据我的理解,根节点是“公司”,其子节点必须是“职员”和“职员”(因为存在“职员”节点2次)。但是,当我尝试通过我的Java代码获取它们时,我得到了5个子节点。3个额外的文本节点从哪里来? Java代码: 输出: 为什么三个文本节点要过来? 问题答案: 为什么三个文本节点要过来? 它们是子 元素 之间的空白。如果只需要子元素,则应忽略其他类