javascript - WebdriverIO 遍历元素列表

标签 javascript selenium webdriver-io

所以我有一个 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 套接字错误,有人可以帮忙吗?我假设选择器没有按照指示附加到页面,但我不知道如何循环遍历它们。

最佳答案

我之前有一个类似于您的方法的解决方案,虽然它似乎有效,但我认为可能只是对您的代码进行了一些细微的调整以获得您想要的结果。从 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()
})

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

关于javascript - WebdriverIO 遍历元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558198/

相关文章:

javascript - ASP.NET C# 如何将 Canvas 图像作为位图传递给 Controller

javascript - 在 Firefox 或 Edge 中从缓存预加载图像时出现问题

javascript - 单击 anchor 链接后导航栏隐藏文本

javascript - 如何构建与溢出 : auto? 一起使用的可调整大小的 DIV

selenium - 如何禁用 Selenium 中的本地存储功能?

python - 在 Python 中使用 Selenium 单击图像抛出无效的 xpath

javascript - WebDriverIO Selenium 将命令行参数从 config.js 文件传递​​到 Chrome

javascript - 如何在 selenium webdriver javascript 脚本中设置 cookie?

node.js - wedriverio jenkins - 找不到 npm 命令错误

typescript - 如何使用带有等待语法的 typescript 获取 webdriverio 中的元素属性值?