使用量角器和 cucumberjs 选择单选按钮选项时出错
Error while selecting radio button option using protractor and cucumberjs
我是 angular 页面自动化测试领域的新手。
我用的框架是protractor,但是我用cucumberjs拼凑起来。
我正在尝试单击单选按钮。这是元素在 DOM 中的样子:-
<div>
<input class="ng-pristine ng-untouched ng-valid" type="radio" ng-click="setTestOrValid(p)" value="Valid" ng-model="p.testOrValidDisplay" name="341">
Valid
<input class="ng-pristine ng-untouched ng-valid" type="radio" ng-click="setTestOrValid(p)" value="Invalid" ng-model="p.testOrValidDisplay" name="342">
Invalid (Test/Junk)
</div>
以下是我编写的可以点击它的函数:-
sut.browser.findElements(sut.by.css('[ng-click="setTestOrValid(p)"]')).then(function(elements){
for (i=0; i < elements.length; i++){
elements[i].getAttribute('value').then(function(value){
if (value == 'Invalid') {
elements[i].click();
}
})
}
});
上面的代码抛出一个错误:-
TypeError: Cannot read property 'click' of undefined
你能帮我解决这个问题吗?
您可以使用 CSS 选择器一次性找到您的元素:
var elm = $("input[type=radio][value=Invalid]");
elm.click();
或者,您可以按型号过滤所有单选按钮,filter()
:
var elm = element.all(by.model("p.testOrValidDisplay")).filter(function(elm) {
return elm.getAttribute("value").then(function (value) {
return value === "Invalid";
});
}).first();
elm.click();
我是 angular 页面自动化测试领域的新手。 我用的框架是protractor,但是我用cucumberjs拼凑起来。
我正在尝试单击单选按钮。这是元素在 DOM 中的样子:-
<div>
<input class="ng-pristine ng-untouched ng-valid" type="radio" ng-click="setTestOrValid(p)" value="Valid" ng-model="p.testOrValidDisplay" name="341">
Valid
<input class="ng-pristine ng-untouched ng-valid" type="radio" ng-click="setTestOrValid(p)" value="Invalid" ng-model="p.testOrValidDisplay" name="342">
Invalid (Test/Junk)
</div>
以下是我编写的可以点击它的函数:-
sut.browser.findElements(sut.by.css('[ng-click="setTestOrValid(p)"]')).then(function(elements){
for (i=0; i < elements.length; i++){
elements[i].getAttribute('value').then(function(value){
if (value == 'Invalid') {
elements[i].click();
}
})
}
});
上面的代码抛出一个错误:-
TypeError: Cannot read property 'click' of undefined
你能帮我解决这个问题吗?
您可以使用 CSS 选择器一次性找到您的元素:
var elm = $("input[type=radio][value=Invalid]");
elm.click();
或者,您可以按型号过滤所有单选按钮,filter()
:
var elm = element.all(by.model("p.testOrValidDisplay")).filter(function(elm) {
return elm.getAttribute("value").then(function (value) {
return value === "Invalid";
});
}).first();
elm.click();