Проблема: в приложении есть страница входа в систему, а затем угловое приложение. Страница входа (html-страница) имеет имя пользователя и пароль, а также кнопку отправки с идентификатором. Транспортир зависает при нажатии кнопки «Отправить» в настройке докера. Отлично работает в windows / windows + безголовый режим.
Установка:
- Версия транспортира: 5.4.1
- chromedriverVersion: '2.43.600233'
- chrome 'version' => '69 .0.3497.92 '
- платформа = Linux 3.10.0-862.11.6.el7.x86_64 x86_64)
- Изображение Docker: узел: 9-полосный.
Сообщение об ошибке
{ TimeoutError: timeout
(Session info: headless chrome=69.0.3497.92)
(Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 3.10.0-862.11.6.el7.x86_64 x86_64)
at Object.checkLegacyResponse (/jenkins/workspace/test-3SZNI3S3QSZNI3S3Q/node_modules/selenium-webdriver/lib/error.js:546:15)
at parseHttpResponse (/jenkins/workspace/test-3SI3S3QSZNI3S3Q/node_modules/selenium-webdriver/lib/http.js:509:13)
at doSend.then.response (/jenkins/workspace/test-3S3RWJGXRELEZNI3S3Q/node_modules/selenium-webdriver/lib/http.js:441:30)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:182:7)Error
at ElementArrayFinder.applyAction_ (/jenkins/workspace/test-3S3RWVELEZNI3S3Q/node_modules/protractor/built/element.js:459:27)
at ElementArrayFinder.(anonymous function).args [as click] (/jenkins/workspace/test-3S3RWVRELEZNI3S3Q/node_modules/protractor/built/element.js:91:29)
at ElementFinder.(anonymous function).args [as click] (/jenkins/workspace/test-3S3ROJJGXRELEZNI3S3Q/node_modules/protractor/built/element.js:831:22)
at /jenkins/workspace/test-3S3RWVTI3S3Q/Commons/Login/page_objects/login_page.js:189:88
at <anonymous> name: 'TimeoutError', remoteStacktrace: '' }
Код:
Scenario: Verifying login
Given I logged in app
Given(/^I logged in app$/, function (callback) {
var testuser = "123456";
var testpasspass = "xyz";
loginPage.login(testuser, testpasspass, callback).then(function () {
homePage.getUserID().then(function (usid) {
expect(usid).to.eql(testuser);
callback();
});
});
});
login: function (userID, userPassword, callback) {
browser.ignoreSynchronization = true;
return browser.get(url).then(function (completed) {
return element(by.id('user')).sendKeys(userID).then(function () {
return element(by.id('pass')).sendKeys(userPassword).then(function () {
return element(by.id('submit')).click().then(function () {
return true;
});
});
});
});
}
protractor.conf:
exports.config = {
directConnect: true,
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
args: ['no-sandbox','headless','disable-gpu','window-size=1366,768'],
},
},
onPrepare: function () {
loginPage = require('./Commons/Login/page_objects/login_page.js');
},
SELENIUM_PROMISE_MANAGER: false,
After: function () {
return this.driver.quit();
},
specs: [
'Modules/testapp/features/useraccess.feature'
],
ignoreUncaughtExceptions: true,
cucumberOpts: {
require: [
'Commons/Login/step_definitions/*.js',
],
}
};
Докер:
FROM node:9-stretch
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" \
apt-get install -y --no-install-recommends \
chromium\
libgconf-2-4 \
openjdk-8-jre-headless\
dbus-x11\
&& rm -rf /var/lib/apt/lists/*
USER node
ENV CHROME_BIN /usr/bin/chromium
jenkinsfile:
pipeline {
agent {
dockerfile {
args "--privileged -v /tmp:/tmp --name Builder --net host --shm-size=4gb"
}
}
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm update --save'
sh './node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update'
}
}
stage ('Test') {
steps {
sh 'npm run test'
}
}
}
}
Попробовал:
- browser.sleep (), чтобы страница загружалась, это не проблема, и element.present () и element.displayed () возвращают true.
- Отключено угловое ожидание с использованием browser.ignoreSynchronization = true; так как его
неугловая страница
- Пробовал понизить хромедривер, транспортир, хром. не помогает