WebDriver.io-检查是否存在元素是否存在非阻滞方式



新秀问题。我正在使用webdriver.io来编写Appium端到最终测试。

我正在使用这些命令检查一个元素的存在:

  • $(selector)
  • browser.waitForVisible(selector, timeout, waitForAppearOrDisappear);
  • browser.element('selector')

如果找不到元素,它们都阻止了我的测试。

如何在不阻止测试执行的情况下检查特定时刻是否存在元素?

我在(简洁(文档中找不到任何东西。

ps。这应该执行技巧browser.findElement(By.css('[data-qa="some-id"]'));,但不是 wdio 命令。(findElementBy未识别(


npm依赖性:

"appium": "^1.10.0",
"appium-doctor": "^1.6.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"wdio-spec-reporter": "^0.1.5",
"webdriverio": "^4.14.1",

使用FindElements -https://webdriver.io/docs/api/element/qunqure-qunqure-qunqure-qunqure-qunqul:

$$(selector)

如果找不到元素,这应该返回一个空数组

好吧,简单的方法是滥用查询硒服务器的事实(使用 $ // 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 <
}

回家后我会添加更多...

相关内容

  • 没有找到相关文章

最新更新