如何从量角器的带有formcontrolname的下拉列表中选择值?

时间:2019-03-07 09:40:21

标签: protractor

<select _ngcontent-c1="" class="form-control ng-untouched ng-pristine ng-invalid" formcontrolname="Designation" required=""><option _ngcontent-c1="" value="">Select Designation</option><!----><option _ngcontent-c1="" value="CEO">CEO</option><option _ngcontent-c1="" value="GM">GM</option><option _ngcontent-c1="" value="BodyGuard">BodyGuard</option><option _ngcontent-c1="" value="Executive">Executive</option></select>

对于以上html,我正尝试使用量角器从下拉列表中选择值。 尝试过但未成功。

var EmpDesignation = element(by.cssContainingText('body.modal-open:nth-child(2) modal-container.modal.fade.show:nth-child(7) div.modal-dialog div.modal-content form.form-horizontal.ng-pristine.ng-invalid.ng-touched div.modal-body div.form-row:nth-child(2) div.col-md-10 > select.form-control.ng-pristine.ng-invalid.ng-touched:nth-child(3)', 'CEO'));
EmpDesignation.click();
  

错误:失败:使用定位器未找到任何元素:   by.cssContainingText(“ body.modal-open:nth-​​child(2)   modal-container.modal.fade.show:nth-child(7)div.modal-dialog   div.modal-content   form.form-horizo​​ntal.ng-pristine.ng-invalid.ng接触的div.modal-body   div.form-row:nth-​​child(2)div.col-md-10>   select.form-control.ng-pristine.ng-invalid.ng-touched:nth-​​child(3)“,   “ CEO”)

有多个类,其类名为“ form-control ng-untouched ng-pristine ng-invalid”。

有人可以提出建议吗?我们可以使用formcontrolname标签吗?

4 个答案:

答案 0 :(得分:1)

我会这样尝试

let EmpDesignation = element(by.xpath('//select[@formcontrol="Designation"]'));

EmpDesignation.sendKeys('CEO'); //Option 1
EmpDesignation.element(by.cssContainingText('option','CEO')) //Option 2

这确实假设formcontrol="Designation"是唯一的。如果这个假设不正确,请告诉我,我会更新。

答案 1 :(得分:0)

首先,您需要单击select元素,然后单击option

options尚不可见

答案 2 :(得分:0)

尝试以下一个

const designation = element(by.css('select.form-control>option'));

测试中

 designation.sendKeys('CEO'); 

希望它对您有帮助

答案 3 :(得分:0)

您还可以使用css选择器并使用'value'属性:

var CEO = element(by.css('[value="CEO"]'));

然后代码将如下所示:

let EmpDesignation = element(by.xpath('//select[@formcontrol="Designation"]'));
return EmpDesignation.click()
   .then(function(){
       return CEO.click();
   });