我正在尝试使用Gulp在我的角度项目中进行e2e测试。
我能够让它正常工作,但前提是我在一个单独的终端窗口中使用webdriver-manager start
手动启动一个独立的selenium服务器。
理想情况下,我希望我的gulp任务能够管理启动和停止服务器,以免为我的团队增加运行这些测试的开销。
我按照这里的说明进行了设置:
他们描述了启动selenium服务器的2个选项。一种是建立一个gulp任务,看起来与webdriver-manager start
:
gulp.task('webdriver_standalone', require("gulp-protractor").webdriver_standalone);
此有效,但是当我的e2eTest任务将其作为依赖项调用时则不行。我必须在一个单独的终端窗口中运行gulp webdriver_standalone
。
我无法理解其他建议选项。
指向量角器配置文件中的selenium jar
这些说明需要protractor
node_modules
./node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar
(node_modules/protractor/
)中 selenium-server-standalone jar 的路径,但selenium
}目录没有这样的jar(或者static int f(int[] a, int inf, int sup) {
if(sup == inf)
return a[inf];
if(sup == inf+1)
return a[inf] + a[sup];
else {
int thrd = (sup - inf + 1)/3;
int i = inf + thrd;
int j = i + thrd;
int sum = 0;
for(int k = i; k < j; k++)
sum += a[k];
return f(a, inf, i-1) + f(a, j, sup) + sum;
}
}
子目录)
Running Protractor without a plugin的说明似乎有同样的问题,必须在另一个终端窗口中运行selenium服务器。
有没有办法让这个设置好,以便单个gulp任务启动独立服务器,运行测试,并关闭它而不需要其他干预?
答案 0 :(得分:10)
当你运行Protractor时,你有几个关于Selenium WebDriver的选项(记住WebDriver是用Java编写的web服务):
在您的情况下,只需运行:
./node_modules/protractor/bin/webdriver-manager update
将下载Selenium。然后将配置指向正确的jar。
答案 1 :(得分:6)
让本地工作的最简单方法是使用本地Selenium Standalone jar,就像Igor在选项#2中建议的那样。 (生成webdriver-manager start
作为生成的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'
}]
};