我進入併爲每個下拉列表創建了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