无法通过量角器选择下拉值

时间:2018-11-30 06:50:08

标签: protractor

我无法通过量角器选择下拉值。 下面是下拉代码。

<select kendo-drop-down-list="dropDownControl" k-ng-model="value" 
        k-options="options" ng-disabled="readOnly=='true'" 
        class="ppKendoDropDown" w6set-kendo-combo-items-width="" 
        data-role="dropdownlist" style="display: none;">
   <option value="-1">Not Defined</option>
   <option value="541999104" selected="selected">Region1</option>
   <option value="542007296">test region</option>
</select>

下面是完整的div

 <div html-compile="keyControlTemplate"><w6-drop-down value="valueObject" property-name="propertyName" model-controller="ngModel" options="options" strings="strings" state="state" key-data-service="dataService" related-object-name="relatedObjectName" display-property-name="displayPropertyNameValue" sort-property-name="sortPropertyNameValue" default-value="defaultValue" filter-items="filterItems" filter-operation="filterOperation" related-parent-property="relatedParentProperty" parent-value="parentValue" ng-readonly="readOnly" mandatory="mandatory" change="onChange()" ng-class="{'error-input': formSubmitted &amp;&amp;  ngModel.$invalid }" class="ng-scope ng-isolate-scope" readonly="readonly">
  <span title="" class="k-widget k-dropdown k-header ppKendoDropDown" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="" aria-disabled="false" aria-readonly="false" style="" aria-busy="false" aria-activedescendant="418efbdc-cf62-43db-9a45-6d465ebe53ea">
     <span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input ng-scope">Not Defined</span><span unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-arrow-s">select</span></span></span>
     <select kendo-drop-down-list="dropDownControl" k-ng-model="value" k-options="options" ng-disabled="readOnly=='true'" class="ppKendoDropDown" w6set-kendo-combo-items-width="" data-role="dropdownlist" style="display: none;">
        <option value="-1">Not Defined</option>
        <option value="541999104">Region1</option>
        <option value="542007296">test region</option>
     </select>
  </span></w6-drop-down></div>

量角器代码:

element.all(by.options('options')).get(1).click();

我想通过索引值选择选项Region1,但低于错误

  

失败:索引超出范围。尝试访问索引为1的元素,但是   只有0个与定位符by.option(“ options”)

相匹配的元素

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

摘自by.options的量角器文档:

  

通过ng-options表达式查找元素。

您在这里没有ng-option属性。

当然,可以用另一种方式完成

var dropdown = element(by.css('.ppKendoDropDown'))
var opt = dropdown.all(by.css('option')).get(1)

dropdown.click()
opt.click()

答案 1 :(得分:0)

尝试:

首先,您应该单击下拉列表以打开它。

 dropdown=element(by.css('select.ppKendoDropDown'))
 dropdown.click();
 selectDropdownbynum(dropdown,2)


 selectDropdownbyNum(element, optionNum) {
        if (optionNum) {
            element.all(by.tagName('option')).then(function(options) {
                options[optionNum].click();
            });
        }
    }

答案 2 :(得分:0)

您可以选择它们

element(by.id('option id')).sendKeys('option value');
 element(by.xpath('//*[@id="option id"]/option[index]')).click();
 element(by.cssContainingText('option','value')).click();

这对我有用

答案 3 :(得分:0)

您的下拉菜单使用Kendo UI,它是一个CSS和javascript下拉菜单,而不是本机下拉菜单。

对于大多数css和javascript下拉列表,这些选项不是来自不可见的select节点,而是通常来自其他元素下的ul节点。

// click on dropdown to expand options
element(by.css('span.ppKendoDropDown')).click();

// or choose option by text
element(by.xpath('//ul/li[@class="k-item"][text()="test region"]')).click();