有没有一种方法可以从另一个页面目标文件访问一个页面目标文件中定义的元素?

例:
如果需要从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: {}
  };

最佳答案

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

关于javascript - Nightwatch(PageObject)来自不同页面对象的访问元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50029800/

10-09 20:05
查看更多