WebdriverIO如何使用相同的选择器遍历元素

时间:2018-09-11 14:38:20

标签: selenium webdriver-io browser-automation

因此,对于特定的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将只选择第一个,然后检查那个。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

可能当您添加.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);});