承诺:WebdriverIO UI 测试 运行 仅适用于 Chrome,不适用于 Firefox、Safari

Promises: WebdriverIO UI tests are running only on Chrome, not working on Firefox, Safari

我创建了 test.page.js,我在页面上设置了元素。我想找到添加按钮。这是我的代码:

import Page from './page';

class TestPage extends Page {
  get addButton() {
    return browser.element('#add-button > a');
  }
  getAddButton() {
    return this.addButton.getText();
  }

根据文档,下面的示例应该有效,但实际上无效。它 returns 未决承诺:

import Page from './page';

class LoginPage extends Page {

    get username()  { return browser.element('#username'); }

在我的 test.spec.js 文件中,我使用 chai 作为 Chai 库的承诺扩展断言此元素:

import testPage from '../pageobjects/test.page';

it('should validate if Add button exists', (done) => {
  testPage.getAddButton().should.eventually.be.equal('Create a new thing').notify(done);
 });

它在 Chrome 上有效,但在 Firefox 或 Safari 上失败。我认为我在定位元素时做错了,我的版本与文档版本不同。有人可以帮忙吗?

问题不在于您的元素选择器,据我所知,这些选择器都写得正确,而在于您如何使用 Chai。

WebdriverIO 在您不需要使用 'eventually' 关键字的地方做了一些特殊的魔法。试试这个断言:testPage.getAddButton().should.equal('Create a new thing')

我使用类似的想法创建了一个测试示例供您尝试运行: http://try.learnwebdriverio.com/share/dyhVLxYf897he6l4