javascript - 无法使用 pa11y 操作登录网站
问题描述
我似乎无法使用 pa11y 和它的“操作”功能登录网站。我发现的有关 pa11y 操作的文档和网站似乎表明这是一件简单的事情,但我没有运气。
我尝试登录各种站点,从已建立的站点 (GitHub) 到托管在云中的我自己的站点,甚至是在我的本地计算机上运行的站点。在“等待 url 更改”操作发生之前,它们都进入登录表单提交按钮(通常是 POST 请求)的“单击”操作,然后挂起并最终超时。
如果我设置headless
为 false 并在 Chromium 中打开检查器,我可以看到在单击登录按钮后发出的 POST 请求,但它永远不会完成。有趣的是,当我在我控制的网站上尝试此操作并可以查看其日志时,我看到服务器端发生了成功的登录,但 pa11y(可能真的是 puppeteer 或 headless-chrome 问题)似乎从未收到响应。
我已经包含了我为 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);
}
}
解决方案
我遇到过同样的问题。我设法通过结合以下内容来传递登录页面:https ://github.com/emadehsan/thal和此处的示例https://github.com/pa11y/pa11y/blob/master/example/puppeteer/index.js . 也许它可以帮助你。
推荐阅读
- c++ - 使用模板函数的默认参数
- selenium - Xpath 有效,可以在 Elements 和 Console 中找到,但在运行应用程序时找不到
- dapper - 是否可以同时通过 dapper 运行 Insert 和 Get?
- python - blog.Post: (models.E014) 'ordering' 必须是元组或列表(即使您只想按一个字段排序)。在 django
- r - R:使用移动窗口按组计算标准偏差
- nlp - SPARKNLP 或 BERT 中的 BERT 嵌入,用于在拥抱脸中进行标记分类
- c++ - c++ 中的新动态数组 - cout array[num]
- javascript - Bootstrap-Vue如何创建自定义列?
- javascript - Firestore - 如何确定地从集合中获取多个随机(非重复,特定数量)文档?
- shader - 将两个自定义过滤器与 pixi js 混合