【问题标题】:Protractor. How to restart browser between tests?量角器。如何在测试之间重新启动浏览器?
【发布时间】:2021-05-21 19:44:52
【问题描述】:

我编写了一组测试,并且每个测试都可以正常工作(对于每个测试,我创建了单独的文件 - 这对我的情况很重要),但是当我尝试将它们全部一起运行时,我遇到了一些问题: 起初我尝试在每次测试后使用“restartBrowserBetweenTests: true” 选项重新启动浏览器,但结果我收到下一个错误:

失败:此驱动程序实例没有有效的会话 ID(您是 调用 WebDriver.quit()?) 并且可能不再使用。

我阅读了一些针对这种情况的建议,但没有任何帮助。

基本上,我可以不重新启动浏览器,但在这种情况下,我想在每次测试后关闭所有活动选项卡,我也不知道该怎么做。借助此功能:

browser.getAllWindowHandles().then((handles) => {
    browser.driver.switchTo().window(handles[1]);
    browser.driver.close();
    browser.driver.switchTo().window(handles[0]);
});

我可以关闭活动选项卡并返回上一个选项卡,但该功能只有在我将此代码放在测试规范中时才有效,这对我来说不舒服(为每个测试复制它)并且如果我从带有函数的特殊文件中调用它由于

,它无法正常工作

“失败:没有这样的窗口:目标窗口已经关闭 来自未知错误:未找到 Web 视图”

错误(丢失上下文的结果)。

【问题讨论】:

    标签: protractor


    【解决方案1】:

    https://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.restart

    改用:

    browser.restart()
    

    也尝试使用 await

      it('Test Puppeteer screenshot', async function()  {
        await browser.get('https://www.google.com')
        let current = await browser.getWindowHandle()
        await browser.executeScript("window.open('https://www.indiatoday.com')")
        handles = await browser.getAllWindowHandles()
        await browser.switchTo().window(handles[1]);
        await browser.close();
        await browser.switchTo().window(handles[0]);
      });
    

    请注意,如果您使用的是页面对象,则必须重新初始化模块:

    如果您对页面使用 javascript 对象表示法,那么

    https://www.npmjs.com/package/decache

    const decache = require('decache');
     let stage1 = require('../pageobjects/stage1.js');
    
    beforeEach(async function () {
        decache('../pageobjects/stage1.js');
        stage1 = require('../pageobjects/stage1.js');
        elements = stage1.elements;
    
      });
    

    如果你使用的是 nodejs 类:

    let stage1 = require('../pageobjects/stage1.js');
    
    beforeEach(async function () {
        stage1 = new PageObjects.stage1();
    
      });
    

    这是因为元素的引用已更改,您必须重新初始化它们

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多