Ночные часы (PageObject) элементы доступа из другого объекта страницы - PullRequest
0 голосов
/ 25 апреля 2018

Есть ли способ получить доступ к элементам, определенным в одном объектном файле страницы, из другого объектного файла страницы?

Пример: если нам нужен доступ к @usernameInput из файла LoginPage.ts, нужно ли нам дублироватьэто из HomePage.ts?Есть ли другой способ?

HomePage.ts
  const page: PageObject = {
    url: ...,
    commands: [
    enterUsername: (query: string) => {
      return this
        .waitForElementVisible('@usernameInput')
  }],
    elements: {
      usernameInput: {
        locateStrategy: 'xpath',
        selector: '//input[@name="Username"]',
      }
  };

LoginPage.js
  const page: PageObject = {
    url: ...,
    commands: [
    enterUsername: (query: string) => {
      return this
        .waitForElementVisible('@usernameInput')
  }],
    elements: {}
  };

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Используйте LocalStoreage для хранения ваших данных и доступа ко всей странице, используя Javascript или Jquery

Установите ваш объект

localStorage.setItem ("PortPlans", PortPlans);

вызвать ваше локальное хранилище на другой странице

var PortPlans = localStorage.getItem ("PortPlans");

console.log (PortPlans);

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

Вы можете получить доступ к одному объекту страницы из другого, используя this.api.page.pageObjectName.

В вашем примере вы бы просто сделали

const loginPage = this.api.page.loginPage();

А затем, чтобы получить элемент usernameInput, вы можете просто сделать это

const usernameInput = loginPage.elements.usernameInput.selector;

Итак, ваша enterUsername функция должна выглядеть примерно так:

enterUsername: (query: string) => {
  const loginPage = this.api.page.loginPage();
  const usernameInput = loginPage.elements.usernameInput.selector;

  return this
    .waitForElementVisible(usernameInput)
    .setValue(usernameInput, query);
}
...