Nightwatch(PageObject)从不同的页面对象接入元件(Nightwatch(Page

2019-09-29 08:58发布

有没有访问来自另一个页面对象文件在一个页面目标文件中定义的元素的方法吗?

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

Answer 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);
}


Answer 2:

使用LocalStoreage,让您的数据和访问使用Javascript或Jquery的所有页面

设置你的对象

localStorage.setItem( “PortPlans”,PortPlans);

打电话给你的localStorage在另一页

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

的console.log(PortPlans);



文章来源: Nightwatch(PageObject) access elements from different page object