如何检查 <body> 中是否存在元素?

How to check if an element exists inside the <body>?

我需要验证元素是否存在。我用过 toBeTruthy() 并且效果很好。我想看看它是否真的在检查元素,所以我使用 toBeFalsy() 来查看它是否未通过测试。它没有。因为这个元素是在<style>里面的<head>。如何验证它是否在 <body> 中可见?

像这样缩小搜索范围应该很容易,具体取决于您使用的定位器。

使用CSS:element(by.css('body original_locator'))

使用 Xpath:(by.xpath('//body//original_locator'))

或者,如果您正在使用其他定位器策略之一,例如 className,您可以链接元素:element(by.css('body')).element(by.className('orginal_locator))'

这两种方法都声明您只需要 body

的后代元素

如果你想检查元素是否存在,你应该使用

expect(
  await element(by.css('your locator')).isPresent()
).toBe(true)

如果您想确保它不仅存在而且可见,请使用

expect(
  await element(by.css('your locator')).isDisplayed()
).toBe(true)

如果您的问题在于定位元素,请使用其中一个

CSS: body > yourElement, > 在这种情况下表示 body

的直接 child

XPath://body/yourElement。如果您在 body 之后使用 / 而不是 //,这表明您正在寻找正文元素

的直接 child