【问题标题】:Function to check element is not displayed in protractor量角器中不显示检查元素的功能
【发布时间】:2018-09-19 23:57:15
【问题描述】:

如何检查量角器中没有显示元素?

我对带有返回真或假的参数的泛型函数感兴趣。我会在测试中多次使用它。

【问题讨论】:

  • 您是否尝试过使用invisibilityOf()预期条件函数?

标签: protractor end-to-end


【解决方案1】:

.isDisplayed() 是你的函数:

expect(elm.isDisplayed()).toBe(false);  // elm is not visible

【讨论】:

  • 这行不通——只要你调用了thing.isDisplayed(),量角器就会抛出以下错误:- Failed: No element found using locator: By(css selector, .thing)
  • @ginna 好吧,我们在这里讨论可见性检查。如果您的元素在 DOM 中根本不存在,您将需要 .isPresent()
【解决方案2】:

此外,如果您不是在做期望,而是在等待某些东西消失,您可以这样做:

browser.wait(function () {
  return elm.isDisplayed().then(function(displayed) {
    return !displayed;
  });
}, 5000);

【讨论】:

    【解决方案3】:

    一种方法是使用 Protractor 的内置 Expected Conditions.invisibilityOf 方法。它不返回真/假,但如果为假则抛出错误。

    import { browser, by, element, ExpectedConditions } from 'protractor';
    
    const elToFind = element(by.css('.thing')),
    
    it('elToFind is hidden or not present', () => {
      try {
        browser.wait(ExpectedConditions.invisibilityOf(elToFind), 5000);
      } catch(err) {
        // the statement threw an error (and thus is false)
        // continue your test here for the 'false' case
      } 
      // the statement executed successfully (and thus is true) 
      // continue your test here for the 'true' case
    });
    

    如果上面抛出错误,您的测试将失败。否则,它通过。

    文档: https://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.invisibilityOf

    【讨论】:

    • 但 OP 想要真或假。您需要将其嵌入到 try catch 中才能给出。
    • 好点,谢谢@jeremy,更新以显示尝试/捕获解决方案
    • 这就是进步。但我认为它确实是在请求函数(l:Locator):boolean{}。话又说回来,已经两岁了,所以可能问的人已经搬走了。就我个人而言,我认为要走的路是(假设它应该已经可见)让 elms=await element.all(loc);如果 elms.count==0(这里没有 awiat,b/c elms 已经解决)返回 false;让retval=false; elms.foreach 如果可见,则 retval=true;返回 retval。可能有些人在等待,但你明白了。另一方面,根据我在网站上看到的情况,alecxe 从来没有错。
    • @jeremy 随意添加另一个答案,很高兴看到如何解决的想法
    • 我认为,问题在于,您当前的方法(遵循我的建议,抱歉)是,在即将到来的异步、等待、硒承诺管理器禁用世界中,它会对一个未解决的问题产生影响承诺拒绝。结果也弄乱了我上面的建议。在github.com/hetznercloud/protractor-test-helper/blob/master/dist/… 中有一个不错的函数返回一个对布尔值的承诺(所以一切都准备好等待),称为 waitToBeNotDisplayed。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2016-10-10
    • 2015-06-28
    相关资源
    最近更新 更多