我想处理一个选择菜单的测试场景,其中spec会选择除当前选择的选项之外的随机选项。我似乎无法找到一个可以让我这样做的定位器或方法。
option[selected]
并从其他索引中选择随机。by.css('option:not([selected])')
- 获取数组的长度并随机选择一个。此选择器似乎忽略:not
部分并返回选项总数。由于我对量角器很新鲜,我真的没有办法看到API的方法。有什么提示吗?
答案 0 :(得分:2)
首先,让我们使用.filter()
过滤未选择的选项:
var nonSelectedOptions = $$("option").filter(function (option) {
return option.isSelected().then(function (isSelected) {
return !isSelected;
});;
});
现在,我们需要一个索引列表来选择一个随机索引,让我们使用.map()
:
var indexes = nonSelectedOptions.map(function (option, index) {
return index;
});
现在,我们需要解析indexes
承诺以获取索引数组并使用this answer中的“从数组中选择随机项”解决方案。我们将使用.get()
为随机选择的索引获取特定选项:
indexes.then(function (indexes) {
var randomIndex = indexes[Math.floor(Math.random()*indexes.length)];
var randomOption = nonSelectedOptions.get(randomIndex);
// now select the randomOption
});
如果您使用建议的here包装器,则选项选择代码为:
randomOption.getAttribute("value").then(function (optionValue) {
mySelect.selectByValue(optionValue);
});
未经测试。