如何使用browser.elements()返回的元素?

时间:2016-10-11 04:34:56

标签: javascript element webdriver-io

以下代码旨在根据this收集href attribute以“/ assets / css /”开头的元素。 然而,首次尝试访问browser.elementIdAttribute(iter1, 'href').valuebrowser.elementIdAttribute(iter1, 'href')时出现以下错误

  

TypeError:无法读取未定义的属性“value”

var styleSheetsElems = browser.elements('[href^="/assets/css/"]').value; 

for (let iter1 in styleSheetsElems)
{ 
    console.log( browser.elementIdAttribute(iter1, 'href').value );
};
  • 在这里我可以看到元素存在(我可以遍历数组虽然我不尝试打印)。

我的理解是 styleSheetsElems的填充应该保证现有的元素并具有href ...

打印。elements('[xyz]')会导致

{ state: 'success',
  sessionId: '652f9f1c-6cad-42d7-89a3-e09a1acbd1af',
  hCode: 1951176523,
  value: 
  [{ ELEMENT: '11' },
   { ELEMENT: '12' },
   { ELEMENT: '88' }],
  class: 'org.openqa.selenium.remote.Response',
  selector: '[xyz]',
  _status: 0 }

所以没有运气......进一步挖掘

1 个答案:

答案 0 :(得分:2)

查询的正确语法如下:

var styleSheetsElems = browser.elements('[href^="/assets/css/"]').value; 

for (let iter1 in styleSheetsElems)
{ 
    console.log( browser.elementIdAttribute(styleSheetsElems[iter1].ELEMENT, 'href').value );
};

根据GreenAsJade的建议,一些有帮助的测试打印出阵列的内容。然后意识到我正在做出这样的假设:' iter1'与存储在该数组中的elementID相同。非常感谢!