Angularjs 使用单次吞咽任务管理量角器测试

Angularjs 使用单次吞咽任务管理量角器测试,angularjs,protractor,Angularjs,Protractor,我正试图让e2e测试在我的角度项目中使用Gulp 我能够让它工作,但前提是我在单独的终端窗口中使用webdriver manager start手动启动独立的selenium服务器 理想情况下,我希望我的gulp任务能够管理服务器的启动和停止,这样就不会增加团队运行这些测试的开销 我是按照这里的说明安装的: 它们描述了启动selenium服务器的两个选项。一种是设置一个gulp任务,该任务的作用似乎与webdriver manager start相同: gulp.task('webdriver

我正试图让e2e测试在我的角度项目中使用Gulp

我能够让它工作,但前提是我在单独的终端窗口中使用
webdriver manager start
手动启动独立的selenium服务器

理想情况下,我希望我的gulp任务能够管理服务器的启动和停止,这样就不会增加团队运行这些测试的开销

我是按照这里的说明安装的:

它们描述了启动selenium服务器的两个选项。一种是设置一个gulp任务,该任务的作用似乎与webdriver manager start相同:

gulp.task('webdriver_standalone', require("gulp-protractor").webdriver_standalone);
这是可行的,但当我让e2eTest任务作为依赖项调用它时就不行了。我必须在单独的终端窗口中运行
gulp webdriver\u standalone

我无法理解另一个建议选项

指向量角器配置文件中的selenium jar

这些说明需要指向selenium server standalone jar的路径,位于
量角器
s
node\u modules
/node\u modules/dragrator/selenium/selenium/server-standalone-2.45.0.jar
)中,但我的
node\u modules/dragrator/
目录没有这样的jar(或
selenium
子目录)

的说明似乎也存在同样的问题,即必须在另一个终端窗口中运行selenium服务器


有没有一种方法可以进行设置,这样一个单独的gulp任务就可以启动独立服务器,运行测试,并在没有其他干预的情况下关闭它?

当您运行量角器时,您有几个关于Selenium WebDriver的选项(请记住WebDriver是用Java编写的web服务):

  • 使用带有远程(独立)服务的量角器运行。它可以是本地的,也可以在不同的机器上。如果Selenium在不同的机器上,那么您的web应用程序应该是公开的,而不仅仅是本地主机。如果您选择使用独立的Selenium服务,则可以使用seleniumAddress选项配置配置文件/Gulp任务
  • “要求”量角器为您运行Selenium。在这种情况下,量角器将使用您在seleniumServerJar配置中提供的Jar文件运行SeleniumWebDriver
  • 不要使用Selenium WD。改为使用direct connect,它仅与Chrome和(可能)Firefox兼容
  • 在您的情况下,只需运行:

    ./node_modules/protractor/bin/webdriver-manager update
    

    它将下载Selenium。然后将config指向正确的jar。

    让它在本地工作的最简单方法是使用本地Selenium独立jar,正如Igor在选项2中所建议的那样。(要让gulp作为派生的子进程或异步任务运行
    webdriver manager start
    是相当困难的。) 您可以使用以下方法轻松地在
    node\u modules
    文件夹中获取该jar:

    npm安装selenium服务器独立jar——保存开发

    然后,在
    dragrator.conf.js
    中注释掉或删除seleniumAddress行,并为seleniumServerJar添加一行


    我想我的问题是我找不到
    .jar
    文件。根本不知道问了这个问题后发生了什么变化,但我通过在服务器运行时运行
    ps-ef
    找到了答案。瞧,这正是我最初的问题所说的我找不到的地方:
    /node\u modules/dragrator/selenium/
    也谢谢你提到的
    direct connect
    ,我还没有听说过。我计划在我们的CI管道中使用远程selenium服务器,但为了本地开发,我想让dragrator为我做这件事。你同意这听起来是最好的选择吗>我也在考虑做同样的事情,但还没有找到一个好的解决方案!默认情况下,对于selenium服务器,量角器现在会查找
    node_modules/dragrator/selenium/…
    。如果通过
    npm
    本地安装了量角器,那么Selenium已经存在,因此不需要单独安装
    Selenium server standalone jar
    。根据,
    seleniumServerJar:
    将默认为
    node\u模块/量角器/selenium/…
    ,除非配置了另一种启动selenium的方法。这意味着无需每次更新seleniumServerJar:
    seleniumServerJar。
    exports.config = {
        seleniumServerJar: '../node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.47.1.jar',
        //seleniumAddress: 'http://localhost:4444/wd/hub',
        /* Lines below for completeness only, leave yours as is. */
        framework: 'jasmine2',
        specs: ['login-spec.js'],
        multiCapabilities: [{
            browserName: 'chrome',
            browserName: 'firefox'
        }]
    };