【问题标题】:Chained scripts in package.json is not executing properlypackage.json 中的链式脚本未正确执行
【发布时间】:2018-12-17 19:20:24
【问题描述】:

我正在尝试使用 package.json 从命令行运行我的量角器测试。

我的 package.json 如下所示 -

{
    "name": "ProtractorFramework",
    "dependencies": {
        "protractor": "^5.4.1"
    },

    "scripts": {    
    "webdriver-manager-update":"./node_modules/.bin/webdriver-manager update",
    "webdriver-manager-start":"./node_modules/.bin/webdriver-manager start",
    "protractor":"./node_modules/.bin/protractor configuration.js",
    "start":"npm run webdriver-manager-update && npm run webdriver-manager-start && npm run protractor"


}
}

当我执行以下命令时 -

npm run start 来自 Project 目录,Selenium 独立服务器已启动,但最后一个命令未执行。这意味着,浏览器没有打开。

为了执行测试/打开浏览器,我不得不在另一个命令窗口中单独执行npm run protractor

我的 package.json 中是否有任何错误导致我无法同时执行所有三个命令?

请帮忙。

【问题讨论】:

    标签: protractor


    【解决方案1】:

    您不能将 selenium 服务器启动命令和测试执行命令链接起来。

    webdriver-manager start 启动一个 Selenium 服务器,会输出一堆信息日志。您的 Protractor 测试将向该服务器发送请求以控制本地浏览器。让此服务器保持运行状态。

    当你运行webdriver-manager start时,selenium 服务器会在命令提示符下运行。如果关闭此命令提示符,则无法关闭它,然后 selenium 服务器将退出。

    相反,您可以创建一个脚本,该脚本将打开一个新的命令提示符并运行 webdriver-manager start 命令,例如

      "scripts": {    
           ..... 
           "wdstart":"start cmd /k webdriver-manager start timeout 10 && npm run protractor"
            ......
           }
    

    【讨论】:

    • Bharath Kumar S - 我了解打开第二个命令窗口的要求,但这是我试图避免的。
    • 普拉博德你试过用“wdstart”:“start cmd /k webdriver-manager start”吗?
    • Bharath Kumar S - 据我了解,"wdstart":"start cmd /k webdriver-manager start" 仅启动服务器。它如何执行测试?我不确定你在这里究竟是什么建议。如果您提供完整的操作链(如果有),将会很有帮助。
    • 将你的 npm run start 脚本更新为 "wdstart && npm run protractor"
    • 我做到了。但是我们这里的问题是,服务器的执行和启动是同时发生的。因此,执行正在寻找一个正在运行的服务器,该服务器仍在进行中,所以它失败了。有什么办法可以在“npm run protractor”命令之前添加一些延迟?我正在寻找您的解决方案。
    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多