【问题标题】:How to use an OR (||) statement in TestCafe如何在 TestCafe 中使用 OR (||) 语句
【发布时间】:2020-11-26 17:55:21
【问题描述】:

我想检查两个元素之一是否存在(不同的导航方式),但我无法以任何方式使其工作。

我试过这样:

((await t.expect(commonElements.navDropdown.exists).ok() || await t.expect(dashboard.dashboardHeader.exists).ok());

或者那样

await t.expect(await commonElements.navDropdown.exists || await dashboard.dashboardHeader.exists).ok();

但它总是评估为假(假)。

我也尝试过很多其他方式,但在我看来,这两个是最接近正确解决方案的方式。

在这种情况下甚至可以使用 OR 逻辑运算符吗?

【问题讨论】:

  • 请不要在问题中添加答案 - 要么写出正确的答案,要么删除问题。

标签: testing automation automated-tests e2e-testing testcafe


【解决方案1】:

好的,问题在于 TestCafe 版本过时。我使用的是 1.8.2 版本,更新到 1.9.4 后,'OR' 语句按预期工作。

感谢所有相关人员的帮助。

【讨论】:

    【解决方案2】:

    第二种方法看起来是正确的,应该可以工作。但是,在这种情况下,断言不会等待超时。此时您的元素之一应该存在于页面上。您可以使用“visible”属性而不是“exist”来等待元素变得可见。

    【讨论】:

    • 感谢您的回答,但它不起作用:( OR 运算符在此示例中似乎不起作用。await t.expect( await commonElements.navDropdown.visible || await dashboard.dashboardHeader.visible).ok(); 仅评估第一个表达式,测试进入另一个步骤,结果为第一个表达式。
    • 你好@Leszek Urbanik,如果第一个表达式返回真,|| 运算符不应评估下一个表达式。我猜await commonElements.navDropdown.visible 表达式返回true,因为测试没有失败并进入下一步。您能否详细说明您希望实现的行为?也许你应该使用&& 运算符,它仅在两个表达式都为真时才返回真。
    • 问题是即使只有第一个表达式为假(第二个为真),测试也会失败。当第一个为真而第二个为假时,测试继续。
    • 我认为问题是由这种行为引起的:表达式await commonElements.navDropdown.visible; 在为真时计算为“真”,但当它为假时,它不会计算为“假”。相反,TestCafe 会引发错误:Cannot obtain information about the node because the specified selector does not match any node in the DOM tree. > | Selector('h3') | .withText('Dashboard')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2015-11-30
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多