如何使用webdriverio迭代JSON元素列表并访问其属性?

时间:2016-10-04 18:29:48

标签: javascript json webdriver-io chimp.js

[使用Chimp.js - 同步式webdriverio API]

如何正确迭代我的元素数组? 或者,更具体地说,我如何访问元素本身的属性?我对.elements() function found in the API以及如何从那里提取元素感到困惑。

var myItem;
var elemArray = browser.elements('.castMemberPicture').value;
console.log(elemArray);

for (myItem in elemArray){ 
    console.log("myItem: " + myItem);
    //  I can log the JSON obj IDs successfully, but can’t seem to access elements like clientHeight, alt, ...
};

如何访问属性?

(输出)

[ { ELEMENT: '0' },
  { ELEMENT: '1' },
  { ELEMENT: '2' },
  { ELEMENT: '3' }]
myItem: 0
myItem: 1
myItem: 2
myItem: 3

...调用.ELEMENT会给出未定义的调用,所以很可能是我使用了API /语法。

我看到https://github.com/webdriverio/webdriverio/issues/273但无论我尝试使用.ELEMENT .value和function的哪种组合,我都无法访问属性。救命?

注意 - 如果我尝试使用console.log("myItem: " + JSON.stringify(elemArray[myItem].ELEMENT));打印来探索元素本身,则输出变为

[ { ELEMENT: '0' },
  { ELEMENT: '1' },
  { ELEMENT: '2' },
  { ELEMENT: '3' }]
myItem: "0"
myItem: "1"
myItem: "2"
myItem: "3"

2 个答案:

答案 0 :(得分:0)

以下是遍历它并检查Chimp中元素的方法:

var myItem;
var elemArray = browser.elements('.castMemberPicture').value;
console.log(elemArray);

// the following will traverse the array and print out the elements 'alt' Attribute!
for (myItem in elemArray){ 
    console.log( browser.elementIdAttribute(myItem, 'alt').value);
};

答案 1 :(得分:0)

根据“元素”的文档,您可以使用element命令单独访问每个元素:

  

可以使用'response.value'检索元素数组,它是元素ID的集合,可以使用'.ELEMENT'方法在后续命令中访问。

所以你的循环:

var myItem;
var elemArray = browser.elements('.castMemberPicture').value;

for (myItem in elemArray){ 
    console.log( browser.getAttribute(myItem, 'alt'));
};