我似乎无法使用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);
}
}
答案 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