首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用WebdriverIO返回新的有效页面对象?

如何使用WebdriverIO返回新的有效页面对象?
EN

Stack Overflow用户
提问于 2018-01-17 19:17:00
回答 1查看 559关注 0票数 2

我们刚刚开始在工作中实现WebdriverIO-mocha-chai框架,因为我有Selenium/Java背景,所以要理解它对我来说有点棘手。

我的页面对象如下所示:

代码语言:javascript
运行
复制
**page.js**

export default class Page {

  get title() { return browser.getTitle() };
  get header() { return browser.element('.Header') }
  get logoutLink() { return browser.element('a.logout') }


  open(url) {
    browser.windowHandleFullscreen().url(`/#/${url}`);
  }
}


**page1.js**

import Page from './page'
import Page2 from './Page2'

class Page1 extends Page {

  get element1() { return browser.element('selector1') }
  get element2() { return browser.element('selector2') }

  clickElement1Page1() {
    this.element1.scroll();
    this.element1.waitForVisible();
    this.element1.click();
    return this;
  }
}

export default new Page1()

**page2.js**

import Page from './page'
import Page1 from './page1';

class Page2 extends Page {
  get element1() { return browser.element('selector1') }
  get element2() { return browser.element('selector2') }
  get element3() { return browser.element('selector3') }
  get element4() { return browser.element('selector4') }

  open() {
    super.open('page2')
  }

  clickElement1Page2() {
    this.element1.scroll();
    this.element1.waitForVisible();
    this.element1.click();
    return this;
  }

  fillForm(name, title) {
    this.element2.setValue(name);
    this.element3.setValue(title);
    this.element4.click();
    return new Page1();
  }
}

export default new Page2()

这与WebdriverIO站点上建议的模型之间的区别在于,我添加了返回语句,这将我们带到我需要帮助的问题上。我希望我的测试看起来尽可能简单,如下所示:

代码语言:javascript
运行
复制
Page2.clickElement1Page2().fillForm("text", "text").clickElement1Page1();

expect(...).to.be.true;

现在,我在return new Page1()行得到了一个"_page1.default不是一个构造函数“。

考虑到在这种范例中,元素不是在构造函数中初始化的,这种链接在WebdriverIO中是可能的吗?任何建议或实战webdriverIO项目的例子都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 03:25:41

首先,我认为您可以通过将return new Page1()更改为return Page1来完成您想要做的事情。

也就是说,我不认为从Page2中返回Page1的好处是值得的。在我看来,页面对象很有用,因为您可以清楚地分隔应用程序的页面/部分,包括在测试用例中。不过,我当然推荐使用return this,以便能够在各个页面对象中链接命令。

写作

代码语言:javascript
运行
复制
Page2.clickElement1Page2().fillForm("text", "text")
Page1.clickElement1Page1()

清楚地表明页面导航是预期的,并且您现在使用的是Page1。调试也容易得多,因为您可以直接转到Page1,而不必从其他页面跟随很长的链。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48299832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档