量角器中的条件语句
conditional statement in protractor
从项目过滤列表中,我尝试单击一个项目 (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
1) charAt(i)
将 return 只有一个 字符。 Char 永远不会等于 SG11
;
2) 如果要检查相等性,请使用 ===
而不是 ==
。
你的代码有一处错误如下:
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.
您可以在 element.all()
上调用 getText()
来读取元素的所有文本,代码如下:
$('.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');
}
}
});
从项目过滤列表中,我尝试单击一个项目 (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
1) charAt(i)
将 return 只有一个 字符。 Char 永远不会等于 SG11
;
2) 如果要检查相等性,请使用 ===
而不是 ==
。
你的代码有一处错误如下:
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.
您可以在 element.all()
上调用 getText()
来读取元素的所有文本,代码如下:
$('.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');
}
}
});