无法从使用Protractor的下拉菜单E2E测试中选择元素

时间:2017-04-19 12:17:31

标签: node.js jasmine protractor angularjs-e2e e2e-testing

有很多方法可以做到这一点,我尝试过很多方法,但在进行自动测试时,我无法从下拉菜单中选择项目。

“选择”是下拉菜单中显示的默认选项,我希望自动测试选择其中一个元素,无论哪一个

这是HTML代码

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.investmentAmount" required="" ng-class="{submitted:invalid}">
                   <option value="">Select</option>
                   <option value="<50"> 50K</option>
                   <option value="50-100">100K</option>
                   <option value="100-250">250K</option>
                   <option value="250-500">500K</option>
                  </select>

这是我的量角器文件

var selectDropdownbyNum = function ( element, optionNum ) {
    if (optionNum){
      var options = element(by.cssContainingText("Select"))  
        .then(function(options){
          options[2].click();
        });
    }
  };
  browser.sleep(2000);

我尝试过使用by.cssElement,by.xpath等。 当我运行上面的操作时,我没有错误,但它也没有选择任何元素。 感谢

3 个答案:

答案 0 :(得分:0)

肯定选择是一个奇怪的鸭子。我通常只按文本选项(如果可能)。例如。你应该可以做这样的事情......

var selectOptionByText = function(text) {
    return element(by.cssContainingText('option', text)).click();
};

答案 1 :(得分:0)

点击//选择[@ng-model =&#39; user.investmentAmount&#39;] usng xpath后, 等一下像#34; browser.sleep(2000)&#34;然后使用//选项[text()=&#39; 100K&#39;]点击。

答案 2 :(得分:0)

这是因为你只选择了一个包含'Select'值并期望数组的选项,

  

尝试下面的内容,首先按型号选择框并获取所有选项   数组中的html标记名称

browser.element(by.model('user.investmentAmount')).all(by.tagName('option')).
   then(function(items){
        items[2].click(); 
});