【问题标题】:TypeError: Cannot read property '0' of undefined - protractor node jsTypeError:无法读取未定义的属性“0”-量角器节点js
【发布时间】:2020-10-15 21:25:48
【问题描述】:

我正在尝试从文件夹中获取所有文件的文本。但遇到以下错误。请帮我解决它。

verifyXZ = async function(){
              
    var listOfFiles = await getListOfElements(locator);
    for (var i = 0; i < listOfFiles.length; i++) {
    var file = await browser.get(listOfFiles[i].getText());
    console.log(file);
      
    }

输出:

TypeError: Cannot read property '0' of undefined

【问题讨论】:

  • 谢尔盖·普列沙科夫 5:请在这里帮忙
  • 编辑问题,将console.log(listOfFiles)的结果作为for循环的第一行。

标签: javascript node.js selenium protractor


【解决方案1】:

这可能意味着属性listOfFiles 正在接收undefined 值,您必须检查您的逻辑。您发布的代码缺少括号,我已经更改了一些变量的范围,它应该如下所示:

verifyXZ = async function () {

    const listOfFiles = await getListOfElements(locator);
    for (let i = 0; i < listOfFiles.length; i++) {
        const file = await browser.get(listOfFiles[i].getText());
        console.log(file);
    }
}

希望它对你有用。

【讨论】:

  • 如果 listOfFiles 未定义,则在设置 for 循环时会出错 TypeError: Cannot read property 'length' of undefined
  • 哦,我明白了,所以listOfFiles[i].getText() 可能正在返回undefined
  • @Enslev 它有 1 个文件并且 listOfFiles.length 正在打印 --> 1 .
【解决方案2】:

我会帮你做这个的,但你应该保证仔细阅读量角器文档:)

您不能盲目地输入某些内容并期望它会起作用。始终逐行测试您的代码。不要键入数千行并尝试一次全部调试。当你在 stackoverflow 上 ping 某人时,请使用 @ 以便我收到通知,我不会检查这里的每个帖子

这应该适合你

verifyXZ = async function() {
  let listOfFiles = getListOfElements(locator); // I assume you tested your locator, and it works (1)
  let count = await listOfFiles.count(); // find out how many elements you have (2)
  for (let i = 0; i < count; i++) { // loop through every
    let file = await listOfFiles.get(i).getText()); // use get() (3)
    console.log(file);
  }

1. by.xpath

2. count()

3. get()

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 2018-11-30
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多