if 语句中的 Expect().toBe(true) 条件未按预期工作

Expect().toBe(true) condition in if statement not working as expected

提问人:Vin 提问时间:5/11/2022 更新时间:5/12/2022 访问量:637

问:

我正在使用带有硒的量角器,并尝试使用 if 语句中的 expect() 条件检查存在的元素,但即使条件为真,它也会阻止。在这种情况下,我尝试了 toBe 和 toEqual,两者的效果都相同。

let email_Original = element(by.css('button[value="original"][aria-pressed="true"]'))
var isTranslated = await email_Original.isPresent()
    console.log('Translate button state is ' + isTranslated)
    if (expect(isTranslated).toBe(true)) {
      console.log('Pass: Email successfully translated to original language')
    } else {
      console.log('Fail: Email not translated to original language')
    }

output
Translate button state is true 
Fail: Email not translated to original language
selenium-webdriver 量角器

评论

0赞 tehbeardedone 5/11/2022
为什么????????? 应该足够了。这里没有理由断言。这不是使用 .if (isTranslated) {}expect()
0赞 Vin 5/11/2022
我以前用过它,那次它工作正常。使用 expect() 的主要原因是目前没有 expect() 当测试失败并转到 else 块时,它会打印语句,但在测试结束时它仍然显示 0 失败。所以我想使用 expect() 这样我就可以得到失败的实际测试用例的数量。我还有其他方法可以得到故障,例如 27 个规格,2 个故障
0赞 tehbeardedone 5/12/2022
您真的需要日志记录消息吗?您可以摆脱 if/else 块并执行 .来自失败测试的消息会说类似 .如果你设置了一个好的描述,你就会知道什么失败了。expect(isTranslated).toBe(true)expected 'false' to be 'true'it('should be translated', () => {})

答:

1赞 tehbeardedone 5/12/2022 #1

我会删除日志记录消息,只使用断言来告诉您是否通过。

it('should be translated', async () => {
  const email_Original = element(by.css('button[value="original"][aria-pressed="true"]'));
  const isTranslated = await email_Original.isPresent();
  expect(isTranslated).toBe(true);
});

评论

0赞 Vin 5/12/2022
我能够使用本页中提到的解决方案解决问题。我用了完成的回调 stackoverflow.com/questions/61514860/...
0赞 Vin 5/12/2022
您的解决方案仅在您想显示失败时才有效,但我也需要传递消息,所以完成回拨对我来说两者都有效