【问题标题】:Get the number of elements that are displayed using WebdriverIO v5获取使用 WebdriverIO v5 显示的元素数量
【发布时间】:2020-12-19 06:06:54
【问题描述】:

我尝试使用 webdriverIO v5 和 Javascript 获取具有特定标签名称的元素的数量。 console.log() 正在打印所有这些,但存储元素数量的变量始终为 0。我错过了什么?

confirmSearchingResultPageHasOnlyTenElements() {
        this.searchBox.waitForEnabled(8000, false);
        this.searchBox.setValue('xyz');
        this.searchButton.waitForClickable({ timeout: 8000 });
        this.searchButton.click();
        var results = browser.findElements("tag name", 'article').values.length;
        console.log(results)
        expect(results).to.be.equal(10);
        results[3].click();
    }

【问题讨论】:

    标签: javascript selenium selenium-webdriver webdriver-io


    【解决方案1】:

    您正在使用findElements,这将返回具有“标签名称”的 webElements 列表:'article'。

    您可以检查每个元素element.isDisplayed(); 并计算它们。

    【讨论】:

      【解决方案2】:

      如果您还没有,请升级到最新版本的 WebdriverIO (v6)。

      你可以这样做:

      const elements = $$('article')
      // expect lib waits for assertion to pass
      // in this case it waits for elements to have length 3
      expect(elements).toBeElementsArrayOfSize(3) // there are exactly 3 `article` elements
      // or expect(elements).toBeElementsArrayOfSize({ get: 3 }) // 3 or more `article` elements
      
      expect(elements).toBeVisible() // make sure all the article elements are visible
      

      【讨论】:

      • 我设法做到了这一点:get results() { return $$("[class='productItem__name']"); } confirmSearchingResultPageHasOnlyTenElements() { this.results.values.length;期望(this.results.length).to.be.lessThan(11); }
      • 我相信这是 v4?它已经没有几年得到支持和维护了。考虑升级到 v6!
      • 它是 v5 但我肯定要升级到 v6
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多