【问题标题】:Mocha with Selenium, how to use the browser in all cases?Mocha with Selenium,如何在所有情况下使用浏览器?
【发布时间】:2023-03-09 22:22:01
【问题描述】:

我仍在努力让这个东西启动并运行,我目前的问题是我不能在所有测试用例中使用同一个浏览器。例如:

describe('Check the website', function() {
    var driver: Driver = new Driver();

it('Check website title', function() {
    this.timeout(0);

    driver.Firefox.get("http://google.com");
    driver.Firefox.getTitle().then(function(title){
        expect(title).to.equal('Google');
    });
});

it('Second test', function() {
    this.timeout(0);

    driver.Firefox.get("http://google.bg");
    driver.Firefox.getTitle().then(function(title) {
        expect(title).to.equal('Google24');
    });
    });
});

我想在所有测试中使用相同的浏览器,我该怎么做?

如果我将var driver: Driver = new Driver(); 放在测试用例中一切正常,问题是在完成第一次测试后它会关闭浏览器,然后再次打开它以进行第二次测试,这会花费很多时间.

附: Driver 是我为初始化浏览器而创建的一个类我想让它在整个项目中可用,我正在使用 TypeScript,但我想我在 JS 中会遇到同样的问题,如何在所有测试用例中使用相同的变量?

【问题讨论】:

    标签: javascript selenium typescript mocha.js chai


    【解决方案1】:

    我想在所有测试中使用相同的浏览器,我该怎么做?

    不要这样做..这是糟糕的测试设计。

    为什么? 自动化测试的常见做法是每次测试都从一个新实例开始。测试依赖性通常是不受欢迎的。考虑以下几点:

    TestSuite
      TestCase1
      TestCase2
      TestCase3
      TestCase4
    

    TestCase2 失败.. 现在34 将失败。

    入门浏览器价格便宜,共享浏览器前应考虑幂等性和可维护性。

    【讨论】:

    • 例如:我想要一个检查页面标题的测试,一个检查一些元素是否可用的测试,一个检查其他内容的测试(都在同一个网页上)和这些测试可以使用同一个浏览器。我不认为我应该启动 3 个浏览器来检查同一个网页上的 3 件事。例如: describe("检查是否所有登录表单元素都存在" .... it("Is X element present") it("Is the title correct") it("Is some other things present") 等等
    • 那么那些不是测试“案例”,那些是测试“步骤”。你可以有多个步骤(检查)。
    • 回到我原来的问题,如何在所有这些步骤中使用浏览器?检查我的代码,这是正确的方法吗?
    猜你喜欢
    • 2020-10-08
    • 2021-11-01
    • 1970-01-01
    • 2016-05-10
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多