我进入并为每个下拉列表创建了id标签。我尝试创建一个循环来选择每个制造商,而不必编写300多行代码,因为在某些下拉列表中有很多选项。我尝试过,并找不到一种方法。第二个下拉菜单例如是“source_manufacturer”。循环将选择下拉列表中的所有元素
这是我的尝试:
var expected = ['COMFORT-AIRE', 'Daewoo', 'GE'];
var els = element.all(by.id('source_manufacturer'));
for (var i = 0; i < expected.length; ++i) {
expect(els.get(i).getText()).toEqual(expected[i]);
}
下面是HTML代码:
<select id="source_manufacturer" ng-class="{'btn btn-default' : !$root.isMobile.iOS()}" class="form-control ng-valid btn btn-default ng-not-empty ng-touched ng-dirty ng-valid-parse" ng-model="manufacturer" ng-options="m.name for m in manufacturers">
`<option selected="selected" value="object:439" label="COMFORT-AIRE">COMFORT-AIRE</option>
....
<option value="object:443" label="Whirlpool">Whirlpool</option></select>`
这是错误消息:失败:索引超出界限。尝试访问索引为1的元素,但只有1个元素匹配locator By(css selector,* [id =“source_manufacturer”])。我想测试是否每个人都可以被选中,并且它实际上是变化的。
期望显示列表中的每个元素而不是一个单独的元素。
这是我怎么会去点击列表中的每个元素:
所有的element(by.id('source_manufacturer')).click().
element(by.cssContainingText('option', 'GE')).click();
你会得到更好的反应,如果你把你的代码放到一个的jsfiddle。但是实际上没有看到任何动作,看起来你是通过id获得的,它的定义必须是唯一的,因此只会产生一个单一的元素。您需要遍历子节点。 – Steve
https://jsfiddle.net/5owyt0tt/由id选择下拉是唯一的真实。必须有一种方法可以选择下拉菜单中的每个选项。 – jmd1002
我不确定您的意思是“选择每个选项”,但是如果您的意思是您希望选择所有选项,则必须首先将此“多个”属性添加到选择标记,使其成为多选元素。其次,这段代码会选择所有这些代码(我假设你使用的是jQuery,因为这个问题有jQuery标签) $('#source_manufacturer option')。each(function(){(this))。 attr('selected',true); }); 但是,那就是说,创建表单时只需设置所选属性即可。也许我错过了你想要完成的事情。 – Steve