【发布时间】:2017-10-13 16:40:51
【问题描述】:
我在自动化过程中处理琐碎场景时遇到问题。我需要使用量角器选择特定选项。我正在传递我想要选择的选项的索引,然后单击它来选择它。但是,我的 click() 方法错误指出该索引上未定义 click() 方法。
这是我想要做的 - 在我的 selectElements.js 文件中,下拉方法定义为
const selectElement={}
selectElement.selectElementDropdown =function(element,index,milliseconds){
console.log("Selecting element by drop down","OK");
element.all(by.tagName('option')).then(function(options){
options[2].click();
//here index 2 is hardcoded, which can be changed to options[index]
});
if(typeof milliseconds!=='undefined'){
browser.sleep(milliseconds);
}
}
module.exports =selectElement;
我使用的是 POM 结构,所以下拉方法在单独的.js file 中。我在我的页面文件中调用它
const methodDropDown = require('../BasePage/selectElements.js');
var signUpBankDetails = function(){
this.bankName = element.all(by.css('.form-group')).get(7).element(by.xpath("//label[text()='Select Bank Name']"));
//the selector is clicked to open the drop down
console.log("Start of this block =========>");
this.selectDropDownMethod = function(){
console.log("Drop Down method start ==========>");
this.bankName.click();
browser.sleep(1000);
methodDropDown.selectElementDropdown(this.bankName,0,1000);
};
我收到错误消息 -
Failed: Cannot read property 'click' of undefined
this.bankName.click() 块工作正常,因为我可以看到该元素被单击并出现下拉菜单,但是选择似乎出错了。我还附上了下面代码的 HTML sn-p -
PS- 该网页正在使用 Angular2。
【问题讨论】:
-
如果您使用
element.all(by.tagName('option')).get(2).click();点击选项,错误会改变吗? -
我已经尝试过了,但是我得到一个索引越界异常。我通过标记名获取元素的代码似乎不起作用-因为错误表明有 0 个元素与此定位器匹配。
标签: javascript protractor angularjs-e2e