невозможно щелкать или отправлять ключи на веб-элементы в Protractor Cucumber Framework - PullRequest
0 голосов
/ 26 марта 2019

Мой код работает нормально, без каких-либо сбоев, но без выполнения каких-либо щелчков, sendkeys или каких-либо других действий. Браузер закрывается автоматически и даже не отвечает на команду browser.sleep..При использовании console.log он печатает текст, но действие элемента не работает

Файл StepDef

var page=require("..\\src\\StepDefFiles\\testpage.js");
var test=function(){
     Given('Load the URL', function () {
        page.browserInit();
       });

       Given('Get the Title', function () {
           // Write code here that turns the phrase above into concrete actions
          browser.getTitle().then(function(title){
              console.log(title);
          })
         });

       Then('Login in to the account', function () {
             page.gmailLink();

         });


       Then('validate the home page', function () {
          browser.getTitle().then(function(Title){
              if(Title.indexOf("sign in")!=-1){
                  console.log(Title);
              }
          })
       });
}
module.exports=new test();

Файл тестовой страницы

var testPage=function(){

    this.browserInit=function(){
         browser.ignoreSynchronization=true;
         browser.get("https://google.com");
         browser.sleep(5000);
         browser.manage().window().maximize();
         browser.sleep(5000);
    }

    this.gmailLink=function(){
        element(By.xpath("//a[text()='Gmail']")).click();
    }

}
module.exports=new testPage();

Файл конфигурации

exports.config = {

seleniumAddress: 'http://localhost:4444/wd/hub',
getPageTimeout: 60000,
allScriptsTimeout: 500000,
framework: 'custom',
// path relative to the current config file
frameworkPath: require.resolve('C:\\Users\\DELL\\node_modules\\protractor-cucumber-framework'),
capabilities: {
    'browserName': 'chrome'
},

// Spec patterns are relative to this directory.
specs: [
    '..\\Protractor_Cucumber\\src\\FeatureFiles\\Test.feature'
],

cucumberOpts: {
    require: '..\\Protractor_Cucumber\\src\\StepDefFiles\\stepDef.js',
    tags: false,
    profile: false,
    'no-source': true
},
 onPrepare: function () {
const {Given, Then, When, Before} = require('C:\\Users\\DELL\\node_modules\\cucumber');
global.Given = Given;
global.When = When;
global.Then = Then;
global.Before = Before;
  }
};

Файл функций

Feature: Title of your feature
  I want to use this template for my feature file

  Scenario: Title of your scenario
    Given Load the URL
    And   Get the Title
    Then  Login in to the account
    And   validate the home page

Журнал консоли

21:41:37] I/launcher - Running 1 instances of WebDriver
[21:41:37] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
.....

1 scenario (1 passed)
4 steps (4 passed)
0m00.030s
Google
[21:41:46] I/launcher - 0 instance(s) of WebDriver still running
[21:41:46] I/launcher - chrome #01 passed

было бы очень полезно для меня, если бы кто-нибудь смог ответить на этот вопрос

1 Ответ

0 голосов
/ 27 марта 2019
  1. Нет необходимости заключать пошаговую функцию в другую функцию и экспортировать, подробности в здесь
  2. Вам необходимо вернуть обещание для каждой пошаговой функции, подробности в здесь

Измените файл StepDef следующим образом:

var page = require("../src/StepDefFiles/testpage.js");

Given('Load the URL', function() {
  return page.browserInit();
});

Given('Get the Title', function() {
  // Write code here that turns the phrase above into concrete actions
  return browser.getTitle().then(function(title) {
    console.log(title);
  })
});

Then('Login in to the account', function() {
  return page.gmailLink();
});

Then('validate the home page', function() {
  return browser.getTitle().then(function(Title) {
    if (Title.indexOf("sign in") != -1) {
      console.log(Title);
    }
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...