示例HTML:
<select id="random_text">
<option value="option1">asadka_TEST</option>
<option value="option2">Peter Parker</option>
<option value="option3">Clark Kent</option>
<option value="option4">aldkfsd_TEST</option>
</select>
类中的Javascript代码
class TestPage extends Page {
get fullNameSelect() {return browser.element('#random_text');}
iterateAndSelect() {
this.fullNameSelect.value.ForEach() //pseudo code
}
}
我希望 iterateAndSelect 函数迭代所有选项,并选择以“ _ TEST”结尾的第一个选项。
到目前为止,我仅弄清楚,发现有selectByVisibleText
个动作,但是问题是我想根据值以“ _TEST”字符串结尾的条件来选择选项,并执行此操作,我必须提供确切的值。
答案 0 :(得分:1)
最简单的方法是找到以_TEST结尾的第一个选项的索引:
const index = browser.getElements('option').findIndex(option => {
return option.getText().endsWith('_TEST')
});
然后您可以使用该索引选择该值:
browser.getElement('select').selectByIndex(index);
答案 1 :(得分:0)
这是一种简单的方法。
// get all options
const options = document.getElementById('random_text').children
// filter key test options
const tests = Object.keys(options).filter( i => options[i].text.indexOf('_TEST') > 0)
// run tests here
tests.map(i => {
console.log(options[i].text)
})
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<select id="random_text">
<option value="option1">asadka_TEST</option>
<option value="option2">Peter Parker</option>
<option value="option3">Clark Kent</option>
<option value="option4">aldkfsd_TEST</option>
</select>
</body>
</html>
答案 2 :(得分:-1)
这是您想尝试的Webdriverio代码:
class TestPage extends Page {
get fullNameSelect() {return browser.elements("option");}
iterateAndSelect() {
var arr=[];
this.fullNameSelect.value.forEach(function(elem) {
var text=browser.elementIdText(elem.ELEMENT).value;
if(text.endsWith('_TEST')) {
arr.push(text);
}
console.log(arr); // all texts that ends with _TEST
});
}
}
module.exports = new TestPage();