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

标签 javascript angularjs node.js protractor pageobjects

所以我无法弄清楚这一点。

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

我之前使用的函数是有效的,但为了减少代码重复并提高流动性和灵活性,我已开始将测试转换为合并页面对象。

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

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', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0e5a6b7d7a3f3e3e4e7a6b7d7a676069206d61206074" rel="noreferrer noopener nofollow">[email protected]</a>', '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+'"]');
};

请注意,返回为您提供了该对象,然后在完整测试中进行交互 - 在我意识到除非我在该函数中返回某些内容,否则它当然会是未定义的之前,我就被它咬住了!

希望有帮助! :D

关于JavaScript:使用页面对象选择下拉列表项进行 Protractor 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28685413/

相关文章:

javascript - Ruby on rails3 javascript 代码放在哪里

css - 无法在 Internet Explorer 中显示带 Angular 表格行的颜色

sql-server - 将 mssql 结果通过管道传输到 Express 响应

javascript - Firebase orderByChild 意外结果

javascript - 两个 javascript 不合作,tick 和ticker

javascript - 使用参数重命名函数而不重写它们 - Javascript

model-view-controller - 为什么在服务器上使用 MVC?这不是客户端模式吗?

angularjs - 如何单击 ng-grid 表中的按钮从模型中删除一行?

javascript - 以下 JS 代码不适用于函数中的 .length 属性

javascript - 在 Node.js 项目中使用 jquery 发出 api 请求