量角器页面对象-TypeError:Object#& lt; Object& gt;没有方法' methodName' [英] Protractor Page objects - TypeError: Object #<Object> has no method 'methodName'

查看:54
本文介绍了量角器页面对象-TypeError:Object#& lt; Object& gt;没有方法' methodName'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用页面对象模式编写一个简单的测试-基于'文档/页面对象'.

I'm trying to write a simple test using page objects pattern - based on the 'docs/page-objects'.

我创建了一个描述页面对象的文件,并使用该页面对象来测试页面.

I created a file describing the page object and other using this page object to test a page.

//page object
var LoginPage = function() {

this.userInput = browser.driver.findElement(by.id('username'));
this.pwdInput  = browser.driver.findElement(by.id('password'));
this.btnEnter  = browser.driver.findElement(by.id('btnLogin'));

this.get = function(){
    browser.get('http://example.com');
};

this.setUser = function (user){
    this.userInput.sendKeys(user);  
};

this.setPasswd = function (password) {
    this.pwdInput.sendKeys(password);
};

this.clickBtnEnter = function (){
    btnEnter.click();
};};

规格文件:

var loginPage = require('./LoginPage.js');
describe('myApp', function() {
  it('should save contract config', function (){        
    loginPage.get();
    loginPage.setUser('userid');
    loginPage.setPasswd('passwd');
    loginPage.clickBtnEnter();
  });
});

我运行此测试时显示以下错误: TypeError:对象#没有方法'get'-在此行:loginPage.get();.

The following error is shown when I run this test: TypeError: Object # has no method 'get' - at this line: loginPage.get();.

当我寻找这个问题时,我发现了各种在量角器中使用页面对象的方法,例如 Astrolable .现在,我不确定页面对象的正确用法.

When I was searching for this problem I found various approaches about using page objects in Protractor, such as Astrolable. Now I am not sure about the correct usage of page objects.

您对我如何解决此测试有任何想法吗?

Do you have any ideas about how I can fix this test?

谢谢你们.

推荐答案

尝试了上述语法(没有成功)后,我使用.现在可以了!我的测试如下:

After trying the above syntax (no success) I rewrote the page object using the Astrolable. Now it works! My test looks like this:

//pageobject
'use strict';
var env = require('./environment.js')

var LoginPage = function () {
  browser.driver.get('http://example.com');
};

LoginPage.prototype = Object.create({}, {

userInput:         {    get: function()    { return browser.driver.findElement(by.id('username'));}},
pwdInput:          {    get: function() { return browser.driver.findElement(by.id('password'));}},
btnEnter:          {    get: function()    { return browser.driver.findElement(by.id('btnLogin'));}},

setUser:           {     value: function (loginName) {
    this.userInput.sendKeys(loginName);        
}},

setPasswd: { value: function (loginPass) {
    this.pwdInput.sendKeys(loginPass);
}},

clickBtnEnter:    {    get: function()    { return this.btnEnter.click();}}    
});

module.exports = LoginPage;

规范文件:

'use strict';
var loginPage = require('./LoginPage.js');

describe('myApp', function() {
    var poLogin = new loginPage();

    it('should save contract config', function (){        
        poLogin.setUser('userid');
        poLogin.setPasswd('passwd');
        poLogin.clickBtnEnter;
    });
});

现在一切正常.感谢您的回答.

Now it is working fine. Thanks for answering.

这篇关于量角器页面对象-TypeError:Object#& lt; Object& gt;没有方法' methodName'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆