在Protractor中选择特定选项

时间:2016-03-08 04:32:50

标签: javascript angularjs protractor

我是一个新生的QA,我在这里尝试编写一个Protractor脚本来从下拉列表中选择一个选项。我的下拉列表中有两个选项,我试图从数字中选择它。

以下是我正在使用的代码。

var selectDropdownbyNum = function ( element, optionNum ) {
    if (optionNum){
    var options = element.findElements(by.tagName('entity.company_id as entity.company_name for entity in entities'))   
      .then(function(options){
        options[1].click();
      });
    }
  };

页面加载时默认选择选项2。我需要的是从下拉列表中选择选项1。但是,我的代码并没有这样做。

以下是select选项的代码段。

<select required="required" class="form-control empty ng-pristine ng-valid ng-not-empty ng-valid-required ng-touched" name="entity_id" ng-model="invoice.entity_id" ng-options="entity.company_id as entity.company_name for entity in entities" ng-required="true" ng-change="entitySelect(invoice.entity_id)">

  <option value="string:568f97841a4885e5de39900e" label="Option Global">Option Global</option>

  <option selected="selected" value="string:568f976a1a4885e5de39900d" label="Option Computer Studies">OptionComputer Studies</option>

</select>

提前致谢:)

3 个答案:

答案 0 :(得分:2)

var selectDropdownbyNum = function(dropDown,optionNumber){

dropDown.click()。然后(函数(){ element.all(by.tagName('entity.company_id as entity.company_name for entity in entity'))。first()。click();       }); };

答案 1 :(得分:1)

找到了完美的答案。

element.all(by.css('cssSelector of the dropdown')).each(function (eachElement, index) 
    {
       eachElement.click();// select the <select>
       browser.driver.sleep(500);// wait for the renderings to take effect
       element(by.css('cssSelector of option want to select')).click();// select the first md-option
       browser.driver.sleep(500);// wait for the renderings to take effect
   });

这就像平静一样:)

答案 2 :(得分:0)

得到了完美答案

var selectOption = element(by.model(&#34; invoice.entity_id&#34;))。all(by.tagName(&#39; option&#39;)); selectOption.get(1)。单击();

我们还可以通过每个功能

获取所有选项值

selectOption.each(函数(项目,索引){

   //Resolve the promise
  item.getText().then(function(data){
       console.log(data+" "+index);
  });

});