Невозможно использовать платежные действия для входа на сайты

Кажется, я не могу войти на сайты с помощью pa11y и его функции «действия». Документация и сайты, которые я нашел, рассказывающие о действиях pa11y, похоже, указывают на то, что это простое дело, но мне не повезло.

Я пытался войти на различные сайты, начиная от установленных сайтов (GitHub) и заканчивая моими собственными сайтами, размещенными в облаке, и даже сайтами, работающими на моем локальном компьютере. Все они доходят до действия «щелчок» для кнопки отправки формы входа (обычно это запрос POST), затем зависают и, в конечном итоге, истекают по тайм-ауту, прежде чем происходит действие «ожидание изменения URL».

Если я установлю для headless значение false и открою инспектор в Chromium, я увижу, что запрос POST выполняется после нажатия кнопки входа, но он никогда не завершается. Интересно, что когда я пробую это на сайтах, которые я контролирую и могу просматривать журналы, я вижу, что успешные входы в систему происходят на стороне сервера, но pa11y (может быть, это действительно проблема кукловода или безголового хрома), кажется, никогда не получает ответ.

Я включил код, который пробовал для GitHub, но он не работает. Я использую Node 8.11.3 на Mac для запуска. Я даже пробовал на втором компьютере и все еще та же проблема. Код основан на примере, приведенном в документации pa11y, и изменен лишь незначительно (https://github.com/pa11y/pa11y/blob/master/example/actions/index.js).

Что я делаю не так?

'use strict';

const pa11y = require('pa11y');

runExample();

async function runExample() {

  try {

    var urlToTest = 'https://github.com/login';

    const result = await pa11y(urlToTest, {

      actions: [
        'navigate to https://github.com/login',
        'set field #login_field to MYUSERNAME',
        'set field #password to MYPASSWORD',
        'click element #login input.btn.btn-primary.btn-block',
        // everything stops here...
        'wait for url to not be https://github.com/login',
        'navigate to https://github.com/settings/profile',
        'screen-capture github.png'
      ],

      chromeLaunchConfig: {
        headless: false,
        slowMo: 250
      },

      log: {
        debug: console.log,
        error: console.error,
        info: console.log
      },

      timeout: 90000

    });

    console.log(result);

  } catch (error) {
    console.error(error.message);
  }

}


person awhalen    schedule 16.08.2018    source источник


Ответы (2)


Я была такая же проблема. Мне удается пройти страницу входа, комбинируя это: https://github.com/emadehsan/thal и пример отсюда https://github.com/pa11y/pa11y/blob/master/example/puppeteer/index.js. Может быть, это поможет вам.

person Maria Patrunjel    schedule 16.08.2018

Проблема возникает из-за использования определенных версий библиотеки puppeteer, которая зависит от pa11y. Использование puppeteer 1.6.2 приводит к рабочей среде. Использование puppeteer 1.7.0 приводило к проблемам с тайм-аутом. Я смог исправить это для себя, указав "puppeteer": "~1.6.0", вместе с зависимостью pa11y в моем файле package.json. Текущая версия Pa11y будет работать с любой версией Puppeteer вплоть до 1.4.0.

Вот актуальная проблема на GitHub для обновления библиотеки pa11y: https://github.com/pa11y/pa11y/issues/421

person awhalen    schedule 30.08.2018