Nightwatch(PageObject)访问来自不同页面对象的元素

时间:2018-04-25 19:14:44

标签: javascript automated-tests nightwatch.js pageobjects

有没有办法从另一个页面对象文件访问一个页面对象文件中定义的元素?

实施例: 如果我们需要从LoginPage.ts文件访问'@usernameInput',我们是否需要从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 :(得分:1)

您可以使用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);
}

答案 1 :(得分:0)

使用LocalStoreage使用Javascript或Jquery在所有页面中保留数据和访问权限

设置您的对象

localStorage.setItem(“ PortPlans”,PortPlans);

在另一页上调用您的本地存储

var PortPlans = localStorage.getItem(“ PortPlans”);

console.log(PortPlans);