【问题标题】:assertion error using chai with mocha and webdriverio使用带有 mocha 和 webdriverio 的 chai 的断言错误
【发布时间】:2023-03-04 21:10:02
【问题描述】:

我收到此错误

AssertionError: expected { state: 'pending' } to equal 'Platform Configurator'

我已经安装了 chaimochanpm

它运行测试但没有通过断言

var webdriverio = require('webdriverio');
var should = require('chai').should()
var expect = require('chai').expect()
var options = {
    desiredCapabilities: {
        browserName: 'chrome'
    }
};

before(function() {
    browser=webdriverio.remote(options)
    return browser.init()

  });


describe('sauce labs page test', function() {
    it('should assert page title', function(done) {


           browser.url('https://docs.saucelabs.com/reference/platforms-configurator/?_ga=1.5883444.608313.1428365147#/');
           browser.getTitle().should.equal('Platform Configurator');
           done();
    });

});

编辑:

如果我使用它,使用 setTimeout 它会在测试完成之前甚至在页面加载之前通过。

var webdriverio = require('webdriverio');
var should = require('chai').should()
var expect = require('chai').expect()
var options = {
    desiredCapabilities: {
        browserName: 'chrome'
    }
};

before(function() {
    browser=webdriverio.remote(options)
    return browser.init()

  });


describe('sauce labs page test', function() {
    it('should assert page title', function() {


           browser.url('https://docs.saucelabs.com/reference/platforms-configurator/?_ga=1.5883444.608313.1428365147#/');

    setTimeout(function () {
          browser.getTitle().should.equal('Platform Configurator');


    }, 10000)



    });

});

【问题讨论】:

  • 酱实验室的内容是动态的还是静态的?如果是动态的,您是否需要在某处暂停以传播内容?
  • @zipzit 我以为done() 正在这样做。我推荐了this
  • 我不是这里的专家。我也在学柴。但我没有看到 done 命令如何“知道”saucelabs 的所有 JS 代码都已完成传播动态数据。我只是好奇你是否可以人为地插入延迟,看看结果是否不同。
  • @zipzit 上面已编辑以包含延迟的结果。
  • .getTitle 是异步的。你正在看到一个承诺。这是一个类似的已回答问题,stackoverflow.com/questions/38663066/…。或者您可以升级到 V4,所有内容都是同步的,webdriver.io/guide/getstarted/v4.html

标签: javascript node.js mocha.js chai webdriver-io


【解决方案1】:

解决 getTitle

browser.getTitle().then(function(title){
  title.should.equal('Platform Configurator');
}

【讨论】:

  • 它有效,但它甚至在完全加载 url 之前就通过了测试。但这可能是一个不同的问题。可能是它真正能够在 url 加载之前获取标题。需要进一步包含更多测试,看看浏览器是否等待这些测试。
  • 只是一个更新,我包含了其他测试,并且它在页面加载之前通过了所有测试。我现在不确定如何解决这个问题。
  • @garajo 你将如何使用链接中的内置期望命令webdriver.io/docs/api/expect.html#tohaveurl
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 2016-05-08
  • 2016-08-07
  • 1970-01-01
  • 2012-07-16
  • 2021-10-07
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多