运行 travis 上的硒罐 CI 来自量角器 node_modules 文件夹
Run selenium jar on travis CI from protractor node_modules folder
我正在设置 Travis,以便通过量角器执行端到端测试。
在我的 protractor.config.js
上,我有以下内容:
seleniumServerJar: './node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.5.0.jar'
所以实际上它指的是 protractor
插件中默认包含的 selenium jar。
然后我使用插件 gulp-protractor
来执行指向右边的测试 protractor.config.js
。
在本地,一切都很顺利。
但是当尝试在 Travis 上执行此操作时,出现以下错误:
[18:59:15] I/launcher - Running 1 instances of WebDriver [18:59:15]
E/local - Error code: 135 [18:59:15] E/local - Error message: No
selenium server jar found at
/home/travis/build/quirimmo/Qprotractor/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.5.0.jar.
Run 'webdriver-manager update' to download binaries.
知道为什么它看起来无法从 node_modules 子文件夹中检索 jar 吗?
这里是我的.travis.yml
配置,其实很简单:
sudo: required
dist: trusty
addons:
chrome: stable
language: node_js
node_js:
- '6.11'
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
install:
- npm install
script:
- echo "Triggered!"
- gulp protractor-test
非常感谢,如有任何帮助,我们将不胜感激!
p.s。我已经在其他项目上使用 Travis 运行 手动 webdriver-manager
然后从 protractor.config.js
指向硒地址,但我不想要那个解决方案,我想去通过 seleniumServerJar
属性,因为这样它将 运行 一切都单独进行,无需手动启动 webdriver-manager
已在您的代码库中修复。您应该将 before_script
更改为以下
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
- npm install -g webdriver-manager
- webdriver-manager update
- webdriver-manager start &
- sleep 3
然后在您的 protactor.confg.js
中添加 seleniumAddress
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub/',
specs: [
'./test/base-protractor.spec.js',
'./test/element-finder.spec.js',
'./test/element-array-finder.spec.js'
],
onPrepare: function() {
require('./index');
}
};
如果这对将来的其他人有用,请在此处发布答案。
正如这个link中解释得很好:
https://github.com/angular/protractor/issues/3225
您需要手动触发selenium 服务器的安装。
所以在你的 travis 文件的 install
块中,你可以简单地添加:
install:
- npm install
- node_modules/protractor/bin/webdriver-manager update
然后在 protractor.config.js
中,获取已安装的 selenium 服务器的当前版本:
const SELENIUM_FOLDER = './node_modules/protractor/node_modules/webdriver-manager/selenium';
const fs = require('fs');
let res, seleniumVersion;
fs.readdirSync(SELENIUM_FOLDER).forEach(file => {
res = file.match(/selenium-server-standalone-(\d{1}.\d{1}.\d{1}).jar/i);
if (res) {
seleniumVersion = res[1];
}
})
if (!seleniumVersion) {
throw new Error('No selenium server jar found inside your protractor node_modules subfolder');
}
然后这样执行:
seleniumServerJar: `./node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-${seleniumVersion}.jar`
我希望这会帮助其他人避免在这个问题上浪费几个小时的时间!
我正在设置 Travis,以便通过量角器执行端到端测试。
在我的 protractor.config.js
上,我有以下内容:
seleniumServerJar: './node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.5.0.jar'
所以实际上它指的是 protractor
插件中默认包含的 selenium jar。
然后我使用插件 gulp-protractor
来执行指向右边的测试 protractor.config.js
。
在本地,一切都很顺利。
但是当尝试在 Travis 上执行此操作时,出现以下错误:
[18:59:15] I/launcher - Running 1 instances of WebDriver [18:59:15] E/local - Error code: 135 [18:59:15] E/local - Error message: No selenium server jar found at /home/travis/build/quirimmo/Qprotractor/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.5.0.jar. Run 'webdriver-manager update' to download binaries.
知道为什么它看起来无法从 node_modules 子文件夹中检索 jar 吗?
这里是我的.travis.yml
配置,其实很简单:
sudo: required
dist: trusty
addons:
chrome: stable
language: node_js
node_js:
- '6.11'
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
install:
- npm install
script:
- echo "Triggered!"
- gulp protractor-test
非常感谢,如有任何帮助,我们将不胜感激!
p.s。我已经在其他项目上使用 Travis 运行 手动 webdriver-manager
然后从 protractor.config.js
指向硒地址,但我不想要那个解决方案,我想去通过 seleniumServerJar
属性,因为这样它将 运行 一切都单独进行,无需手动启动 webdriver-manager
已在您的代码库中修复。您应该将 before_script
更改为以下
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
- npm install -g webdriver-manager
- webdriver-manager update
- webdriver-manager start &
- sleep 3
然后在您的 protactor.confg.js
中添加 seleniumAddress
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub/',
specs: [
'./test/base-protractor.spec.js',
'./test/element-finder.spec.js',
'./test/element-array-finder.spec.js'
],
onPrepare: function() {
require('./index');
}
};
如果这对将来的其他人有用,请在此处发布答案。 正如这个link中解释得很好:
https://github.com/angular/protractor/issues/3225
您需要手动触发selenium 服务器的安装。
所以在你的 travis 文件的 install
块中,你可以简单地添加:
install:
- npm install
- node_modules/protractor/bin/webdriver-manager update
然后在 protractor.config.js
中,获取已安装的 selenium 服务器的当前版本:
const SELENIUM_FOLDER = './node_modules/protractor/node_modules/webdriver-manager/selenium';
const fs = require('fs');
let res, seleniumVersion;
fs.readdirSync(SELENIUM_FOLDER).forEach(file => {
res = file.match(/selenium-server-standalone-(\d{1}.\d{1}.\d{1}).jar/i);
if (res) {
seleniumVersion = res[1];
}
})
if (!seleniumVersion) {
throw new Error('No selenium server jar found inside your protractor node_modules subfolder');
}
然后这样执行:
seleniumServerJar: `./node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-${seleniumVersion}.jar`
我希望这会帮助其他人避免在这个问题上浪费几个小时的时间!