JavaScript:使用页面对象选择下拉列表项进行量角器测试

JavaScript:使用页面对象选择下拉列表项进行量角器测试,javascript,angularjs,node.js,protractor,pageobjects,Javascript,Angularjs,Node.js,Protractor,Pageobjects,所以我想不出这个 我的测试要求选择一个列表项作为表单的一部分来创建新用户。但是,当我运行测试时,它不会从列表中选择项目。量角器没有返回任何错误,它认为测试是成功的 我以前使用的函数是有效的,但为了减少代码重复,增加流动性和灵活性,我已经开始将测试转换为包含页面对象 下面是我的测试文档,其中显示了从两个不同的页面对象调用的函数: it('Should create first new User.', function() { var users_page = require('../pag

所以我想不出这个

我的测试要求选择一个列表项作为表单的一部分来创建新用户。但是,当我运行测试时,它不会从列表中选择项目。量角器没有返回任何错误,它认为测试是成功的

我以前使用的函数是有效的,但为了减少代码重复,增加流动性和灵活性,我已经开始将测试转换为包含页面对象

下面是我的测试文档,其中显示了从两个不同的页面对象调用的函数:

it('Should create first new User.', function() {
    var users_page = require('../page/users_page.js');
    var addUser_page = require('../page/addUser_page.js');
    users_page.addUserButton.click();
    addUser_page.addUser('Test', 'Smith', 'Test100@testing.co.nz', 'Password', 'Password', '0');
    addUser_page.userRole[1];
    addUser_page.confirmNewUser.click();
    addUser_page.backToUsersPage.click();
});
除了第6行-选择一个列表项之外,这里的所有内容都有效

下面是调用.userRole函数时引用的页面对象的代码段:

this.userRole = function (index) {
    this.element(by.model('tes.userRole')).$('[value="'+index+'"]');
};
注意:页面对象与测试对话没有问题,因为还有多个其他函数可以工作


如果您需要更多信息,请告诉我,干杯。

我有几次遇到这个问题;如果要单击该对象,则需要在页面对象中写入如下内容:

this.clickUserRoleByIndex = function (index) {
    this.element(by.model('tes.userRole')).$('[value="'+index+'"]').click();
};
或者我认为你想做什么

您可以执行以下操作以获取该对象:

this.getUserRoleByIndex = function (index) {
    return this.element(by.model('tes.userRole')).$('[value="'+index+'"]');
};
请注意,return为您提供了在完整测试中与之交互的对象-在我意识到它当然是未定义的之前,我被它咬了一口,除非我在该函数中返回一些东西


希望有帮助!:D

是的,我添加了“返回”,解决了问题,谢谢兄弟。