Транспортир зависает при нажатии кнопки входа в настройке безголового chrome-debian-docker, отлично работает в windows - PullRequest
0 голосов
/ 30 октября 2018

Проблема: в приложении есть страница входа в систему, а затем угловое приложение. Страница входа (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; так как его неугловая страница
  • Пробовал понизить хромедривер, транспортир, хром. не помогает
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...