Не удается установить значение в поле формы в рамках webdriverio Cucumber - PullRequest
1 голос
/ 17 апреля 2020

Я очень новичок в webdriver io и cucumber framework. Пробовал мой первый тест с экраном входа приложения. Я могу вызвать браузер и веб-сайт загружен. Но когда я пытаюсь установить значение для поля входа в систему, он выдает следующую ошибку и прерывает

«Ошибка в» Выполнение входа в систему: Войдите в систему с помощью пользователь по умолчанию: Когда я вхожу с пользователем по умолчанию "browser. $ (...). setValue не является функцией"

Я попытался установить пакет syn c и установить syn c истина в файле конфигурации. Я не мог заставить его работать. Пожалуйста, помогите!

Вот мой конфигурационный файл

exports.config = {

//
// ====================
// Runner Configuration
// ====================
//
// WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or
// on a remote machine).
runner: 'local',
//
path: '/wd/hub',

specs: [
    './features/*.feature'
],
// Patterns to exclude.
exclude: [
    // 'path/to/excluded/files'
],
//

maxInstances: 10,

capabilities: [{

    // maxInstances can get overwritten per capability. So if you have an in-house Selenium
    // grid with only 5 firefox instances available you can make sure that not more than
    // 5 instances get started at a time.
    maxInstances: 5,
    //
    browserName: 'firefox',
    // If outputDir is provided WebdriverIO can capture driver session logs
    // it is possible to configure which logTypes to include/exclude.
    // excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs
    // excludeDriverLogs: ['bugreport', 'server'],
}],

logLevel: 'info',
sync:true,
bail: 0,

baseUrl: '********************',
//
// Default timeout for all waitFor* commands.
waitforTimeout: 10000,
//
// Default timeout in milliseconds for request
// if browser driver or grid doesn't send response
connectionRetryTimeout: 90000,
//
// Default request retries count
connectionRetryCount: 3,

services: ['selenium-standalone'],


framework: 'cucumber', 


cucumberOpts: {
    requireModule: ['@babel/register'],// <string[]> ("extension:module") require files with the given EXTENSION after requiring MODULE (repeatable)
    require: ['./step-definitions/*.js'],       // <string[]> (file/dir) require files before executing features

    backtrace: false,   // <boolean> show full backtrace for errors
    dryRun: false,      // <boolean> invoke formatters without executing steps
    //compiler: ['js:babel-core/register'],
    failFast: false,    // <boolean> abort the run on first failure
    format: ['pretty'], // <string[]> (type[:path]) specify the output format, optionally supply PATH to redirect formatter output (repeatable)
    snippets: true,     // <boolean> hide step definition snippets for pending steps
    source: true,       // <boolean> hide source uris
    profile: [],        // <string[]> (name) specify the profile to use
    strict: false,      // <boolean> fail if there are any undefined or pending steps
    tagExpression: '',  // <string> (expression) only execute the features or scenarios with tags matching the expression
    timeout: 60000,     // <number> timeout for step definitions
    ignoreUndefinedDefinitions: false, // <boolean> Enable this config to treat undefined definitions as warnings.
},

Ответы [ 3 ]

0 голосов
/ 22 апреля 2020

Добро пожаловать в переполнение стека. Чем больше уместных деталей вы дадите в своем вопросе, тем скорее получите ответ.

Насколько мне известно, проблема может быть в любом из трех перечисленных ниже.

1) setValue не работает на вашем элементе, потому что вы не выбрали правильный элемент. Вы можете попытаться улучшить свой селектор / локатор.

2) вы можете попробовать щелкнуть в текстовой области и попытаться использовать keys api.

3) Вы не делаете свойство path должно иметь это значение. Вы можете оставить значение по умолчанию '/'.

Ссылка: Пример РЕПО на GitHub

0 голосов
/ 27 апреля 2020

Я выбрал режим asyn c для запуска команд при добавлении зависимостей при создании конфигурации. js. Я удалил рабочее пространство и повторил все шаги. Но на этот раз изменил его на режим syn c для запуска команд и записал опять тот же код. все работает. Спасибо всем за ваши предложения.

0 голосов
/ 18 апреля 2020

Попробуйте вместо этого выполнить этот простой тестовый пример:

describe("webdriver.io page", () => {
it("should have the right title", () => {
    browser.url('https://www.google.com');
    browser.maximizeWindow();
    $('input[name="q"]').setValue('some text');
    });
});

А вы можете опубликовать пример теста, пожалуйста?

Пример огурца:

When('user enters valid username', () => {
  loginPage.emailAddress.addValue('some text');
});

Где loginPage - это объект PageObject, содержащий emailAddress в качестве элемента.

...