使用单个Gulp任务管理Protractor测试

Zac*_*bey 10 angularjs protractor

我正在尝试使用Gulp在我的角度项目上进行e2e测试.

我能够让它工作,但只有我webdriver-manager start在一个单独的终端窗口中手动启动一个独立的selenium服务器.

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

我按照这里的说明进行了设置:

https://github.com/mllrsohn/gulp-protractor

他们描述了启动selenium服务器的2个选项.一个是建立一个gulp任务,它似乎做同样的事情webdriver-manager start:

gulp.task('webdriver_standalone', require("gulp-protractor").webdriver_standalone);
Run Code Online (Sandbox Code Playgroud)

有效,但是当我的e2eTest任务将其作为依赖项调用时.我必须gulp webdriver_standalone在一个单独的终端窗口中运行.

我无法理解其他建议的选项.

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

这些说明在s ()中需要一个到selenium-server-standalone jar的路径,但是我的目录没有这样的jar(或者根本没有子目录)protractornode_modules./node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jarnode_modules/protractor/selenium

没有插件的Running Protractor的说明似乎有同样的问题,必须在另一个终端窗口中运行selenium服务器.

有没有办法让这个设置,以便单个gulp任务启动独立服务器,运行测试,并关闭它没有其他干预?

Igo*_*ych 10

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

  1. 使用带有远程(独立)服务的Protractor运行.它可以是本地的,也可以是不同的机器.如果Selenium在不同的机器上,那么您的Web应用程序应该是公开的,而不仅仅是localhost.如果您选择使用独立的Selenium服务,则使用seleniumAddress选项配置配置文件/ Gulp任务.
  2. "问"量角器为你运行Selenium.在这种情况下,Protractor将使用您在seleniumServerJar配置中提供的Jar文件运行Selenium WebDriver.
  3. 不要使用Selenium WD.请改用直接连接,它只与Chrome和(可能)Firefox兼容.

在您的情况下,只需运行:

./node_modules/protractor/bin/webdriver-manager update
Run Code Online (Sandbox Code Playgroud)

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


Mic*_*ros 6

在本地工作的最简单方法是使用本地Selenium Standalone jar,就像Igor在选项#2中建议的那样.(很难将webdriver-manager startgulp作为生成的child_process或异步任务运行.)您可以node_modules使用以下命令轻松获取文件夹中的jar :

npm install selenium-server-standalone-jar --save-dev

然后,在protractor.conf.js注释中删除seleniumAddress行并为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'
    }]
};
Run Code Online (Sandbox Code Playgroud)