3
4

2 回答 2

3

改用 findElements - https://webdriver.io/docs/api/element/ $$.html:

$$(selector)

如果找不到元素,这应该返回一个空数组,但它不应该导致失败。

于 2019-05-13T15:37:47.890 回答
0

好吧,最简单的方法是滥用查询 Selenium 服务器(使用$ / element是非破坏性操作这一事实。

假设您必须查询 2 个元素,一个已在 DOM 中呈现,另一个没有(或该元素完全不存在)。

let thisLoaded = $('span.coreSpriteFacebookIconInverted');
let thisDidnt = $('span.coreSpriteInstagramIconInverted');

这两个变量将具有以下内容:

thisDidnt = { 
  sessionId: '7056961e1950b5c54827a51c137cca96',
  value: { ELEMENT: '0.8611270215748772-1',
           'element-6066-11e4-a52e-4f735466cecf': '0.8611270215748772-1' },
  selector: 'span.coreSpriteFacebookIconInverted',
  _status: 0 
}

thisDidnt = { 
  type: 'NoSuchElement',
  message: 'An element could not be located on the page using the given search parameters.',
  state: 'failure',
  sessionId: '7056961e1950b5c54827a51c137cca96',
  value: null,
  selector: 'span.coreSpriteInstagramIconInverted' 
}

因此,您现在可以继续进行检查...

if (thisLoaded.value) {
  // > if element loaded <
} else { 
  // > if element didn't load <
}

等我回家再补充...

于 2019-05-15T15:28:56.873 回答