我是一个新生的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>
提前致谢:)
答案 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);
});
});