首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何管理多个.js文件,以便在CucumberJS中使用它们的标签运行自动化测试用例?

如何管理多个.js文件,以便在CucumberJS中使用它们的标签运行自动化测试用例?
EN

Stack Overflow用户
提问于 2019-06-04 17:27:09
回答 2查看 227关注 0票数 0

我正在使用带有Selenium-Webdriver的CucumberJS来自动化我的测试用例。目前,我有多个特征文件和它们各自的步骤定义文件。当我试图运行测试用例时,它抛出了一个错误:

错误:以前配置的ChromeDriver服务仍在运行。您必须先将其关闭,然后才能调整其配置。在新的(D:\code\egov-test-cases\node_modules\selenium-webdriver\chrome.js:305:11) (D:\code\egov-test-cases\features\support\world.js:21:12) at Object的Object.setDefaultService (D:\code\egov-test-cases\node_modules\selenium-webdriver\chrome.js:305:11)。(D:\code\egov-test-cases\features\steps\create_approver_remittance_master.js:15:13)在Module._compile (module.js:653:30)在Object.Module._extensions..js (module.js:664:10)在Module.load (module.js:566:32)在tryModuleLoad (module.js:506:12)在Function.Module._load (module.js:498:3)在Module.require (module.js:597:17) at require (内部/模块:11:18) at supportCodePaths.forEach.codePath Module.require at Array.forEach () at Cli.getSupportCodeLibrary (D:\code\egov-test-cases\node_modules\cucumber\lib\cli\index.js:142:22) at D:\code\egov-test-cases\node_modules\cucumber\lib\cli\index.js:169:41 (D:\code\egov-test-cases\node_modules\cucumber\lib\cli\index.js:44:103)错误命令在Generator.next ()的asyncGeneratorStep失败,退出代码为% 1。有关此命令的文档,请访问https://yarnpkg.com/en/docs/cli/run

因为我正在自动化测试,所以我已经将下面的自动化铬的代码放在world.js文件中,然后尝试从world.js导入驱动程序,但仍然给出了相同的错误。

代码语言:javascript
复制
 class World {
  constructor() {

    const { setDefaultTimeout } = require('cucumber');

    const webdriver = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    const path = require('chromedriver').path;

    const screen = {
      width: 640,
      height: 480
    };

    setDefaultTimeout(100 * 5000);

    var service = new chrome.ServiceBuilder(path).build();
    chrome.setDefaultService(service);

    this.driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
  }
}
EN

回答 2

Stack Overflow用户

发布于 2019-06-06 03:36:47

您可能需要做的是在每次测试运行后终止浏览器,因为容器被重用(这就是为什么浏览器可能已经在运行)。为此,您需要在support文件夹中添加一个钩子文件,并包含以下内容

代码语言:javascript
复制
After({}, async function(scenario) {
  this.driver.quit();
  }
});

有关更多信息,请查看文档https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/hooks.md

票数 0
EN

Stack Overflow用户

发布于 2019-06-06 16:21:54

我找到了我的问题的解决方案。实际上,驱动程序被初始化了多次,这就是为什么它会给我上面的错误。我在world.js文件中的类World中的构造函数中创建了驱动程序。每次我获取类World的一个实例时,我都在创建一个新的驱动程序。我将驱动程序声明转移到类之外作为const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build(),并在world.js文件中创建了一个作为initialize() { return driver; }的方法。我在步骤定义文件中以let world = new World(); let driver = world.initialize()的形式调用initialize()方法。现在我可以开始了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56441107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档