Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面对象设计模式量角器_Javascript_Angularjs_Protractor - Fatal编程技术网

Javascript 页面对象设计模式量角器

Javascript 页面对象设计模式量角器,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我正在尝试将我的量角器代码移动到一个页面对象设计模式,我是从我的登录测试开始的,请在下面找到我的代码 当运行我的测试时,量角器加载页面bu失败。当尝试将文本输入用户名密码输入时,我尝试使用by.id和by.input定位用户名文本区域,但两者都不起作用。 还请注意,在使用页面对象模式量角器之前运行登录测试时,可以找到文本区域 page-login.js: var loginPage = function () { this.userName = element(by.input('us

我正在尝试将我的量角器代码移动到一个页面对象设计模式,我是从我的登录测试开始的,请在下面找到我的代码

当运行我的测试时,量角器加载页面bu失败。当尝试将文本输入用户名密码输入时,我尝试使用by.id和by.input定位用户名文本区域,但两者都不起作用。 还请注意,在使用页面对象模式量角器之前运行登录测试时,可以找到文本区域

page-login.js:

  var loginPage = function ()
{
   this.userName = element(by.input('userName'));
   this.password =  element(by.input('userPassword')) ;
   this.loginButton = element(by.id('login_form_signin_button'));
   this.loginText = element(by.css('#mainGlobalSearchBtn'));
   this.loginError = element(by.xpath('html/body/div[1]/div[1]/div[1]/form/div/p'));
   this.login = function (userName, password)
{
    loginPage.userName.sendKeys(userName);
    loginPage.password.sendKeys(password);
    loginPage.loginButton.click ();
    browser.waitForAngular ();
}

};





it('should not login : incorrect login details', function()

{
      var loginPage = new loginPage();            
      loginPage.login('incorrectusername','incorrectpassword');
     expect(loginPage.loginError.getText()).toContain('Access denied');
});   
控制台输出:

   1) Login should not login : incorrect login details
   Message:
    TypeError: undefined is not a function
   Stacktrace:
 TypeError: undefined is not a function
at null.<anonymous> (C:\Users\orsyp\DUX\k_workload_ar\ui\e2e\login.spec.js:3
1:26)
at C:\Users\orsyp\DUX\k_workload_ar\ui\node_modules\grunt-protractor-runner\
node_modules\protractor\jasminewd\index.js:54:12
at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\orsyp\DUX\k_worklo
ad_ar\ui\node_modules\grunt-protractor-runner\node_modules\protractor\node_modul
es\selenium-webdriver\lib\webdriver\promise.js:1445:20)
at webdriver.promise.ControlFlow.runEventLoop_ (C:\Users\orsyp\DUX\k_workloa
d_ar\ui\node_modules\grunt-protractor-runner\node_modules\protractor\node_module
s\selenium-webdriver\lib\webdriver\promise.js:1310:8)
at wrapper [as _onTimeout] (timers.js:252:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
1)不应登录:不正确的登录详细信息
信息:
TypeError:undefined不是函数
堆栈跟踪:
TypeError:undefined不是函数
在空。(C:\Users\orsyp\DUX\k\u workload\u ar\ui\e2e\login.spec.js:3
1:26)
位于C:\Users\orsyp\DUX\k\u workload\u ar\ui\node\u modules\grunt量角器runner\
node\u modules\dragrator\jasminewd\index.js:54:12
在webdriver.promise.ControlFlow.runInNewFrame(C:\Users\orsyp\DUX\k\u worko)上
ad\U ar\ui\node\U模块\grunt量角器运行器\node\U模块\Degrator\node\U模块
es\selenium webdriver\lib\webdriver\promise.js:1445:20)
在webdriver.promise.ControlFlow.runEventLoop(C:\Users\orsyp\DUX\k\u workloa
d\U ar\ui\node\U模块\grunt量角器运行器\node\U模块\Gradutor\node\U模块
s\selenium webdriver\lib\webdriver\promise.js:1310:8)
at包装器[as_onTimeout](timers.js:252:14)
at Timer.listOnTimeout[as onttimeout](timers.js:110:15)
如果我遵循这个示例,您应该添加
var loginPage=new loginPage()进入
it
功能

it('should not login : incorrect login details', function() {
  //add this line
  var loginPage = new loginPage();   

  loginPage.login('incorrectusername','incorrectpassword');
  expect(loginPage.loginError.getText()).toContain('Access denied');
}); 

我不明白你的
module.exports=newloginpage()行。在页面对象示例中,使用
var angularHomepage=new angularHomepage()
进入
it
函数。很抱歉,我的测试仍然失败(忘记配置conf.js)我已经编辑了我的代码和我遇到的错误。你有stacktrace来知道哪一行抛出了这个错误吗?我想你没有复制整个login.spec.js,所以我无法确定哪一行是
login.spec.js:43:25
::我想你的登录功能有问题,但我不确定。顺便说一句,在
this.login=function(){…}
我添加了整个login.spec.js代码之后缺少分号。此解决方案修复了原始问题吗?:)
    const log = Factory.getLogger("Page.DashDashboardPage");

export class DashDashboardPage extends PageBase{

    private lblDashPageTitle        : any;
    private lnkDashMyDashboard      : any;
    private btnDashNewTeamDashboard : any;
    private txtDashSearchRecord     : any;

    constructor(){
        super();
        const element = Elements.DashDashboardPage;
        this.lblDashPageTitle       = super.findLocators(element.lblDashPageTitle.findBy,element.lblDashPageTitle.value);
        this.lnkDashMyDashboard     = super.findLocators(element.lnkDashMyDashboard.findBy,element.lnkDashMyDashboard.value);
        this.btnDashNewTeamDashboard= super.findLocators(element.btnDashNewTeamDashboard.findBy,element.btnDashNewTeamDashboard.value);
        this.txtDashSearchRecord    = super.findLocators(element.txtDashSearchRecord.findBy,element.txtDashSearchRecord.value);
    }

    /**
     * Get: load dash-dashboard base url
     * @returns {DashDashboardPage}
     */
    public get(): DashDashboardPage{
        ConfigRoute.visit_page('http://op.xxx-tek.com/test/');
        log.info("Step: navigate to http://op.xxx-tek.com/test/ [:get:]");
        return new DashDashboardPage();
    }

    /**
     * Validate: verify dash-board page title
     * @param title
     * @returns {DashDashboardPage}
     */
    public check_And_Validate_dash_page_title(title: string): DashDashboardPage{
        this.Helper_Assertion.expectToEqual(this.lblDashPageTitle,title);
        log.info("Validate: Verify dash page tile [:check_And_Validate_dash_page_title:]");
        return new DashDashboardPage();
    }
}