selenium - WebdriverIO如何迭代具有相同选择器的元素
问题描述
所以对于一个特定的 div id,我告诉 webdriverIO 返回一个包含所有复选框的数组,如下所示:
browser.elements('div[data-test-id="filter: inventory source"] input[type="checkbox"]').value;
这将返回:
[ { ELEMENT: '0.39366615381480075-8',
'element-6066-11e4-a52e-4f735466cecf': '0.39366615381480075-8',
selector: 'div[data-test-id="filter: inventory source"] input[type="checkbox"]',
value: { ELEMENT: '0.39366615381480075-8' },
index: 0 },
{ ELEMENT: '0.39366615381480075-9',
'element-6066-11e4-a52e-4f735466cecf': '0.39366615381480075-9',
selector: 'div[data-test-id="filter: inventory source"] input[type="checkbox"]',
value: { ELEMENT: '0.39366615381480075-9' },
index: 1 },
{ ELEMENT: '0.39366615381480075-10',
'element-6066-11e4-a52e-4f735466cecf': '0.39366615381480075-10',
selector: 'div[data-test-id="filter: inventory source"] input[type="checkbox"]',
value: { ELEMENT: '0.39366615381480075-10' },
index: 2 }]
我遇到的问题是选择器都是一样的。当我使用 forEach 循环时,我无法迭代检查每个复选框。WebdriverIO 只会选择第一个并检查那个。
有任何想法吗?
解决方案
可能当您添加.value
它时,它会获得总元素大小的第一个元素值。
对 WebdriverIO 不是很熟悉,但是试试下面的代码:
var valueAttrs =
browser.elements('div[data-test-id="filter: inventory source"] input[type="checkbox"]')
.map(function(e){ return e.getAttribute('value'); });
valueAttrs.forEach(v=>{console.log('value: ' + v);});