无法使用pa11y操作登录网站

时间:2018-08-16 02:00:25

标签: javascript puppeteer google-chrome-headless pa11y

我似乎无法使用pa11y及其“操作”功能登录网站。我发现有关文档操作的文档和站点似乎表明这是一件简单的事情,但是我没有运气。

我试图登录到各种站点,从已建立的站点(GitHub),到我自己的云托管站点,甚至是本地计算机上运行的站点。所有这些都进入登录表单提交按钮(通常是POST请求)的“单击”操作,然后挂起,最终超时,直到发生“等待URL更改”操作。

如果我将headless设置为false并在Chromium中打开检查器,则可以看到单击登录按钮后发出了POST请求,但从未完成。有趣的是,当我在自己控制的站点上尝试此操作并可以看到其日志时,我看到在服务器端成功进行了登录,但是pa11y(也许这实际上是伪装或无头的Chrome问题)似乎从未收到响应。 / p>

我已经包含了我为GitHub尝试的无法正常工作的代码。我在Mac上使用Node 8.11.3来运行它。我什至在第二台计算机上尝试过,仍然遇到相同的问题。该代码基于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);
  }

}

2 个答案:

答案 0 :(得分:0)

我有同样的问题。我设法通过结合以下内容来传递登录页面:https://github.com/emadehsan/thal和此处的示例https://github.com/pa11y/pa11y/blob/master/example/puppeteer/index.js。也许对您有帮助。

答案 1 :(得分:0)

该问题似乎源于使用puppeteer库的某些版本,这是pa11y的依赖项。使用puppeteer 1.6.2可以在工作环境中工作。使用puppeteer 1.7.0会导致超时问题。通过在"puppeteer": "~1.6.0",文件中的pa11y依赖项旁边指定package.json,我可以自己解决此问题。当前版本的Pa11y可以愉快地与任何版本的1.puppeteer一起使用。

这是GitHub上有关pa11y库以进行更新的相关问题:https://github.com/pa11y/pa11y/issues/421