从项目的筛选列表中,我尝试单击一个项目(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
答案 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)请,如果要检查相等性,请使用===
而不是==
。