使用量角器,如何获得当前所选的其他选项?

时间:2016-01-21 20:59:27

标签: angularjs protractor

我想处理一个选择菜单的测试场景,其中spec会选择除当前选择的选项之外的随机选项。我似乎无法找到一个可以让我这样做的定位器或方法。

  1. 策略1:获取当前索引option[selected]并从其他索引中选择随机。
  2. 策略2:获取未选择的选项by.css('option:not([selected])') - 获取数组的长度并随机选择一个。此选择器似乎忽略:not部分并返回选项总数。
  3. 由于我对量角器很新鲜,我真的没有办法看到API的方法。有什么提示吗?

1 个答案:

答案 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);
});

未经测试。