webdriverIO - необработанное отклонение обещания: NoSuchSessionError: неверный идентификатор сеанса - PullRequest
1 голос
/ 24 мая 2019

Я изучаю тестирование пользовательского интерфейса с помощью Jasmine & WebdriverIO. Я использую это с NodeJS. У меня есть следующий тестовый код:

const projectsPage = require('../../lib/pages/projects.page');
const by = require('selenium-webdriver').By;

describe('Projects page', () => {
  it('Search google', async() => {
    await projectsPage.navigateTo();
    driver.getTitle().then(function(title) {
      expect(title).toBe('Google');
    });
    driver.findElement(by.name('q')).sendKeys('test');
  })
});

Когда я запускаю его, я получаю сообщение об ошибке:

Unhandled promise rejection: NoSuchSessionError: invalid session id
      (Driver info: chromedriver=2.46.628411 (3324f4c8be9ff2f70a05a30ebc72ffb013e1a71e),platform=Mac OS X 10.14.5 x86_64)

Но приведенный ниже код успешно работает:

describe('Projects page', () => {
  it('Search google', async() => {
    await projectsPage.navigateTo();
    driver.getTitle().then(function(title) {
      expect(title).toBe('Google');
    });
    driver.findElement(by.name('q'))
  })
});

Где я был не прав?

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Поскольку findElement и sendKeys также возвращают обещания, вам также придется дождаться методов:

await driver.findElement(by.name('q')).then(element => element.sendKeys('test'));
0 голосов
/ 28 мая 2019

Ваш тест закончился до того, как код действительно запустится, вы должны подождать каждого асинхронного оператора

const projectsPage = require('../../lib/pages/projects.page');
const by = require('selenium-webdriver').By;

describe('Projects page', () => {
  it('Search google', async() => {
    await projectsPage.navigateTo();
    const title = await driver.getTitle();
    expect(title).toBe('Google');
    const q = await driver.findElement(by.name('q'));
    await q.sendKeys('test');
  })
});
...