【问题标题】:Promises: WebdriverIO UI tests are running only on Chrome, not working on Firefox, Safari承诺:WebdriverIO UI 测试仅在 Chrome 上运行,不适用于 Firefox、Safari
【发布时间】:2018-07-25 13:41:25
【问题描述】:

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

【问题讨论】:

    标签: javascript selenium-webdriver automated-tests es6-promise webdriver-io


    【解决方案1】:

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

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

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

    【讨论】:

    • 就是这样,我只是在使用 Chai 时遇到了问题,问题不在于 WebdriverIO 本身。谢谢@klamping
    • 很高兴它修复了它!
    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 2021-11-21
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2013-06-30
    相关资源
    最近更新 更多