当前位置: 首页 > 知识库问答 >
问题:

量角器-cucumberjs:browser.get()不工作

蒯胜泫
2023-03-14

当我用量角器运行cucumber时,我收到错误信息,任何人都可以帮助我提出原因:

'use strict';

( function () {

var navigate = function () {
    browser.get( 'http://store.demoqa.com/products-page/your-account/' );
};

var login = function ( username, password ) {
    this.username.sendKeys( username );
    this.password.sendKeys( password );
    this.loginButton.click();
};

var LoginPage = function () {
    this.username     = dv.findElement( by.id( 'log' ) );
    this.password     = dv.findElement( by.id( 'pwd' ) );
    this.loginButton  = dv.findElement( by.id( 'login' ) );
};

LoginPage.prototype.navigate = navigate;
LoginPage.prototype.login    = login;

module.exports = LoginPage;

} )();
'use strict';

var LoginPage      = require( '../login/loginpage.js' );

var HomePage       = require( '../../features/homepage/homepage.js' );

var chai           = require( '../../chai' );

var chaiAsPromised = require( '../../chai-as-promised' );

chai.use( chaiAsPromised );

var expect = chai.expect;

module.exports = function () {

var loginPage;
var homePage;

this.Before( function ( callback ) {
    loginPage = new LoginPage();
    homePage  = new HomePage();
    isAngularSite(false);
    loginPage.navigate();
    callback();

} );

this.After( function ( callback ) {
    //logout
    callback();
} );

// First Scenario
//this.When('I am in login page')

this.Given(/^I login using valid creadentials$/, function ( callback ) {

    loginPage.login( 'username', 'password' ); //valid creadential
    callback();
} );

this.Then(/^I should be logged in$/, function ( callback ) {
    expect(homePage.homeIndicator).toEqual('http://someUrl.com/#home');
    callback();
} );

};

-----------------config.js---------------

'use strict';

var config = {

seleniumAddress : 'http://localhost:4444/wd/hub',
specs           : [ 'features/login/login.feature' ],
baseUrl         : 'http://store.demoqa.com/',
capabilities    : {
browserName : 'firefox'
},

onPrepare   : function () {
var width  = 1024;
var height = 600;

global.dv = browser.driver;

dv.manage().window().setSize( width, height );

// This will tell the Protractor not to wait for angular
global.isAngularSite = function(flag) {
    browser.ignoreSynchronization = !flag;
};
},

framework : 'cucumber',

cucumberOpts : {
// define your step definitions in this file
require : 'features/login/spec.js',
//format  : 'pretty'
}

};

exports.config = config;

----------login.feature------------

Feature: Login

As a user, I should be able to have login creadentials so that I can login to    the system

Scenario: Valid login creadentials

Given I login using valid creadentials

Then I should be logged in

共有1个答案

井通
2023-03-14

原因是我忘记在loginpage.js的set函数中添加括号。替换

LoginPage.prototype.navigate = navigate;
LoginPage.prototype.login    = login;

由:

LoginPage.prototype.navigate = navigate();
LoginPage.prototype.login    = login();
 类似资料:
  • 问题内容: 我似乎无法使Protractor意识到Angular已加载并正在运行。当Chrome打开时,我的应用程序已完全加载到浏览器中,因此我知道Angular已加载并正常运行。 配置文件: 我只有一个要运行的测试,但由于量角器找不到Angular而失败了。 考试: 这是我得到的错误: UnknownError:JavaScript错误:未定义角度(会话信息:chrome = 30.0.1599

  • 问题内容: 这正是我想要做的 我用表格打开一个页面,该表格包含有关用户的信息 我的getText()元素指示表中的用户数(例如“列表中的11个用户”) 我删除“列表中的用户”部分,并将字符串转换为整数,以便稍后在for循环中使用 我需要通过用户名(第9列)查找某些用户,并获取数字,该数字是该用户信息所在的行数(这就是我被卡住的地方) 我转到该行的第一列(该行将成为该特定用户的编辑按钮),然后单击它

  • 问题内容: 当我使用量角器执行以下代码时,它可以工作。我将嵌套的json传递给for循环。由于for循环的异步工作,它将打印变量i的所有值并达到最后一个值,因此它始终访问最后一对用户名和密码。我该如何解决这个问题? 问题答案: 您需要牢记,不能将-loop与promises一起使用。一切都是异步的,所以 最终它会咬到你 ,这意味着它已经准备好了,但测试还没有。 根据您的示例,建议创建一个名为例如的

  • 我维护了一个复杂的Angular(1.5.x)应用程序,该应用程序正在使用Protractor(2.5.x)进行E2E测试。我在使用这种方法时遇到了一个问题,主要表现在测试似乎不可靠。在一个拉请求中运行良好的测试在另一个请求中失败。这涉及简单的定位器,例如by.linkTest(…)。我调试了失败的测试,应用程序位于正确的页面上,链接存在并且可以访问。 还有人遇到过这些一致性问题吗?知道原因或解决

  • 问题内容: 我编写了量角器自动化测试并遇到了问题。Wait命令实际上并不等待数组元素之一。请参阅以下示例:导航到网页后,我尝试等待第一个元素。 但是测试失败,并显示以下错误:。 错误与定位器类型无关,因为它同时出现在:“ by.repeater”和“ by.css”上。选择器还可以,添加“ sleep”命令后测试通过: 另外,timeout参数也无济于事,它会忽略它并立即失败。 那么问题是如何等待