【问题标题】:WebdriverIO loop through element listWebdriverIO 循环遍历元素列表
【发布时间】:2018-07-11 12:13:38
【问题描述】:

所以我有一个包含 250 行的表,我只想从一列中获取所有值并检查它们是否符合要求的条件:

const rows = browser.elements(selector..);

  const numbers = [];
  rows.value.forEach(cellData => {
    const value = browser.elementIdText(cellData.value.ELEMENT).value;

    // some logic to check if the value is ok

    numbers.push(value);
  });
  // check if all numbers are sorted correctly

,但大多数时候它在线上失败(它说stale element reference: element is not attached to the page document):

const value = browser.elementIdText(cellData.value.ELEMENT).value;

我尝试过cellDate.getText(),但是出现了 Java 套接字错误,有人可以帮忙吗?我假设选择器未按照指示附加到页面,但我无法弄清楚如何循环遍历它们。

【问题讨论】:

标签: javascript selenium webdriver-io


【解决方案1】:

我之前有一个与您的方法类似的解决方案,虽然它似乎有效,但我认为可能只是对您的代码进行一些细微的调整以获得您想要的。从 elementIdText 调用结束时,我从来没有太多的运气链接。

第 1 步:获取所有数据(browser.elements 或 browser.$$):

let cellData = browser.$$('selector that matches desired Column Data') 

上面返回一个 JSON WebElements 数组。如您所知,您可以正确循环查看“值”的数组。如果您使用与您正在寻找的列值匹配的选择器,您应该将所有类似的数据存储在element.value.ELEMENT 中。

第 2 步:循环遍历 cellData 数组并使用 browser.elementIdText() 提取 ELEMENT 的文本值

cellData.forEach((elem) => {

  let number = browser.elementIdText(elem.value.ELEMENT)
    //elementIdText also returns a JSON WebElement so it's number.value
    if(number.value === <condition>) {
      console.log('number looks good')
      //perform other on value logic
    }

  })
  //perform other logic still in loop EX: array.push()
})

我希望这会有所帮助!如果您遇到任何障碍,请告诉我!

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2016-05-29
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    相关资源
    最近更新 更多