Как повторно инициализировать объекты страницы в транспортире перед каждым сценарием? - PullRequest
0 голосов
/ 04 марта 2019

Я использую транспортир с огурцом и трипеском.У меня все мои объекты страницы определены как классы.В определении шагов я инициализирую каждый необходимый объект страницы и использую его для различных утверждений или действий.Настройка работает нормально при запуске одного сценария.Однако, если я хочу запустить больше сценариев, мне нужно найти способ для повторной инициализации объектов страницы для каждого сценария, в противном случае транспортир будет использовать ранее инициализированные объекты с элементами, которые были получены для первого экземпляра браузера, и я получуошибка.

Есть идеи, как это сделать?Я попытался посмотреть примеры проектов на github, но не смог найти ничего, что решило бы мою проблему.

Это небольшой пример из моей настройки:

loginpage.po.ts:

export class LoginPage{
    ...     
    async login(username:string,password:string){
        await this.enteremail(username);
        await this.clickNext();
        await this.enterPass(password);
        await this.clickSignIn();
   ...
}
    }

common.steps.ts:

import { LoginPage} from '../pageobjects/loginPage.po';
...
var loginPage: LoginPage= new LoginPage();

Given('I have the URL ', async () => {
    await browser.get(config.baseUrl);
    await expect(loginPage.isAtSignIn()).to.eventually.be.true;
});

 Given ('I login', async () => {
     await loginPage.login(config.params.username, config.params.password);
 });

1 Ответ

0 голосов
/ 05 марта 2019

Создайте функцию в вашем файле спецификаций

initializePageObjects() {
var loginPage: LoginPage= new LoginPage();
}

Теперь добавьте эту функцию в ваш beforeEach(), чтобы ваш класс инициализировался для каждого it().

beforeEach(){
await initializePageObjects();
}

Hopeэто тебе поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...