首页 > 解决方案 > 承诺:WebdriverIO UI 测试仅在 Chrome 上运行,不适用于 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();
  }

根据文档,下面的示例应该可以工作,但不能。它返回待处理的承诺

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 上失败。我认为我在定位元素方面做错了,我的版本与文档版本不同。有人可以帮忙吗?

标签: javascriptselenium-webdriverautomated-testses6-promisewebdriver-io

解决方案


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

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

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


推荐阅读