量角器中的条件语句

时间:2018-07-09 11:22:16

标签: protractor conditional

从项目的筛选列表中,我尝试单击一个项目(SG11)。问题在于项目排序列表和项目名称不断变化。所以我尝试编码..

$('.mat-input-infix.mat-form-field-infix').click();
        element.all(by.css('.mat-option-text')).then(function(viewName) {
            console.log(viewName.length);
        for (var i = 0; i < viewName.length; i++) {

        if (viewName [i] == 'SG11') {
            element(by.css('.mat-option-text')).click();
        }
        else{
                console.log('invalid');
        }
        }}); 

});

但是它总是执行else语句。在if条件下我怎么了?还有如何单击该特定项目?请帮助

DOM

<mat-option class="mat-option ng-star-inserted" role="option" tabindex="0" id="mat-option-4" aria-selected="false" aria-disabled="false"><!----><span class="mat-option-text">
            SG11 
        </span><div class="mat-option-ripple mat-ripple" mat-ripple=""></div></mat-option>

                SG11_mhk             

console

2 个答案:

答案 0 :(得分:1)

您的代码中有一个错误的位置,如下所示:

element.all(by.css('.mat-option-text')).then(function(viewName) {
   // viewName represents all matched elements, 
   // rather than the text content of all matched elements

   if (viewName[i] == 'SG11') {  // therefor the if condition is no way to be True.

您可以在getText()上调用element.all()来读取元素的所有文本,如下代码:

$('.mat-input-infix.mat-form-field-infix').click();

let allOpts = element.all(by.css('.mat-option-text'));

allOpts.getText().then(function (viewName) {
    console.log(viewName.length);

    for (var i = 0; i < viewName.length; i++) {

        if (viewName[i] == 'SG11') {
            allOpts.get(i).click();
        }
        else {
            console.log('invalid');
        }
    }
});

答案 1 :(得分:0)

1)charAt(i)将仅返回一个字符。字符永远不会等于SG11;

2)请,如果要检查相等性,请使用===而不是==