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

通过步骤定义和页面对象在cucumber量角器中实现方案大纲

朱通
2023-03-14

有人知道为什么当我尝试运行这个步骤时,它可能会显示为“未定义”吗?下面您将看到一个示例,我试图用cucumber场景大纲进行实验,我的“Examples:”部分有一个条目。另外,页面对象和步骤def也包含在内。出于某种原因,当我尝试运行它时,我得到如下错误:

1) Scenario: Verify user can search # ..\features\automation\regression\samplezz.feature:13
   √ Before # ..\support\world.js:21
   √ Given I navigate to the ea site # ..\step_definitions\ea_page_steps.js:4
   √ Then I click on the search icon # ..\step_definitions\ea_page_steps.js:8
   ? When I search for the word angular
       Undefined. Implement with the following snippet:

         When('I search for the word angular', function (callback) {
           // Write code here that turns the phrase above into concrete actions
           callback(null, 'pending');
         });

下面是特性文件

Feature: sampleZZ
The purpose of this feature file is to navigate to the eaAutomationa site


  Scenario Outline: Verify user can search
    Given I navigate to the ea site
    Then I click on the search icon
    When I search for the word <word>

    Examples:
    |word|
    |angular|
let {Given, Then, When} = require('cucumber');


Given(/^I navigate to the ea site$/, function(){
    return browser.get(this.url.ud); });

Then(/^I click on the search icon$/, function(){    
    return this.pages.udPage.click_Search();
    });

When(/^I search for the word "([^"]*)" $/, function(word){
     return this.pages.udPage.enter_SearchText(word) });
class UDPage extends require('../base_page.js') {   constructor() {
    super();
    this.eaautomation = by.css('#new_searchicon > i');
    this.eaLogo = by.css('//#header_logo');   };   click_Search() {
    return element(this.eaautomation).click();   }

  enter_SearchText(text){
    return element(this.eaautomation).sendKeys(text);   }

} module.exports = UDPage;

注意:我在框架中有一个通用构造函数,因此在编写测试时不必导入任何页面。有人能帮助我理解第3步的错误是什么,它一直显示未定义?

使用以下

“依赖关系”:{“chai”:“4.1.2”,“chai-如约”:“7.1.1”,“chakram”:“1.5.0”,“cucumber”:“4.0.0”,“cucumber-html-reporter”:“3.0.4”,“fs”:“0.0.2”,“path”:“0.12.7”,“量角器”:“5.3.0”,“量角器-cucumber-framework”:“4.2.0”}

编辑-添加config.js

let path = require('path'),
  environment = require('./environment');

exports.config = Object.assign({}, environment, {

  seleniumAddress: 'http://localhost:4444/wd/hub', // 'http://localhost:4444/wd/hub' to run locally

  capabilities: {
    "browserName": "chrome",
    "shardTestFiles": true,
    "maxInstances": 1,
    "ignoreProtectedModeSettings": true
  },

  specs:[
      '../features/automation/regression/sample2.feature',
  ],



  params: {
    environment: 'qa1', // dit, qa4, or qa1
    platform: 'browser', // browser or mobile
    path: {
      page_objects: path.resolve(__dirname + '/../page_objects'), // Default directory for the page objects
     page_factory: path.resolve(__dirname + '/../page_objects/page_factory.js'), // Default page factory location
     projectRoot: path.resolve(__dirname + '/../') // Default root for the automation
    }
  }

});

共有1个答案

井镜
2023-03-14

删除步骤定义中“([^”]*)“周围的双引号,功能文件中没有引号。

When(/^I search for the word ([^"]*)$/, function(word){});


 enter_SearchText(text) {
    var me = this;

    // wait 15 seconds
    return browser.sleep(15*1000).then(function(){
        return element(me.eaautomation).sendKeys(text);
    });
 }
 类似资料:
  • 我要驱动执行的代码是: 因此,在一个实例中(当传入string=“have”时),我希望向我的方法中传入一个值,如objpolicyamendrequest.setcolor(“blue”); 另一个方法(当传递给string=“have not”时)我不想传递任何东西给这个方法。 我想我需要遵循if语句,但不确定Cucumber是否有帮助。 希望我说得有道理。我对编程还是有点陌生!

  • 自从我升级到最新的社区版IntelliJ 15.0.3以来,每当我使用alt-enter从功能定义文件自动生成步骤定义时,它都会以驼峰大小写而不是带下划线的常规样式创建方法。 例如,它过去是这样生成的 但现在它产生了通常的camelCase惯例: 有没有办法把这个设置改回第一种样式? 谢谢

  • TL:DR控制台不显示缺少步骤的步骤正则表达式 编辑:添加功能文件

  • 我正在用cucumber和ruby实现自动化。我的情况如下。 为了实现,我在第二步中进行了迭代以单击所有链接。 为此,我每次都必须回到主页,然后进行验证。我是否必须每次重复第二步实现,或者我可以跳过第三步并在第二步中实现所有内容?

  • 我知道Cucumber可以在给定的步骤定义中定义实例变量。此实例变量成为

  • 我正在尝试使用几个cucumber场景运行一个示例功能文件,但当我运行它们时,我发现我没有实现步骤定义,但我实际上做到了,我有一个名为step定义的文件夹,并且在一个名为Step定义的java类中,我在其中编写了步骤 但是我实际上实施了这些步骤,所以我不明白发生了什么,这些是我实施的步骤。 这是我的特征文件 intellij版本 pom.xml http://maven.apache.org/xs