在木偶师中按回车键

在木偶师中按回车键似乎没有任何效果。但是,当我按下其他键时,它会做它应该做的事情。 这种方法是有效的:

await page.press('ArrowLeft');

这不是:

await page.press('Enter');

输入是这样的:

enter image description here

有什么想法吗?

编辑: 我也试过 page.keyboard.down & page.keyboard.up。

86905 次浏览
await page.type(String.fromCharCode(13));

使用 这个网站,我注意到 page.type发送 beforeinputinput事件,但是 page.press不发送。这可能是一个 bug,但幸运的是,发送 Enter keycode (13)似乎可以工作,所以我们现在可以解决这个问题。

我通常使用 page.keyboard.press('Enter');:)对我有用。

看一下文档 给你。我认为您应该在 .press之前使用 .keyboard来使其正常工作。

Press () :

您可以使用 page.keyboard.press()模拟按下回车键。以下任何选项都可以正常工作:

await page.keyboard.press('Enter'); // Enter Key
await page.keyboard.press('NumpadEnter'); // Numeric Keypad Enter Key
await page.keyboard.press('\n'); // Shortcut for Enter Key
await page.keyboard.press('\r'); // Shortcut for Enter Key

Press () :

另外,在按回车键之前,你可以使用 page.$()elementHandle.press()的组合来将焦点集中在一个元素上:

await (await page.$('input[type="text"]')).press('Enter'); // Enter Key
await (await page.$('input[type="text"]')).press('NumpadEnter'); // Numeric Keypad Enter Key
await (await page.$('input[type="text"]')).press('\n'); // Shortcut for Enter Key
await (await page.$('input[type="text"]')).press('\r'); // Shortcut for Enter Key

Type () :

此外,你可以使用 page.type():

await page.type(String.fromCharCode(13));

Type () :

同样,您可以使用 page.keyboard.type():

await page.keyboard.type(String.fromCharCode(13));

发送字符() :

另一种替代方法是使用 page.keyboard.sendCharacter()方法:

await page.keyboard.sendCharacter(String.fromCharCode(13));

Page.keyboard.down ()/page.keyboard.up () :

你也可以结合使用 page.keyboard.down()page.keyboard.up():

// Enter Key
await page.keyboard.down('Enter');
await page.keyboard.up('Enter');


// Shortcut for Enter Key
await page.keyboard.down('NumpadEnter');
await page.keyboard.up('NumpadEnter');


// Shortcut for Enter Key
await page.keyboard.down('\n');
await page.keyboard.up('\n');


// Shortcut for Enter Key
await page.keyboard.down('\r');
await page.keyboard.up('\r');

简短的回答首先把它附加到输入控制器上可能是个好主意:

    await page.type('#inp_srch_box', 'add');
await page.type('#inp_srch_box',String.fromCharCode(13));

长话短说。

  cat package.json
{
"name": "test-open-login",
"version": "0.7.9",
"description": "an example test to test the login of the qto app",
"main": "test-open-login.test.js",
"scripts": {
"test": "mocha --recursive test",
"server": "http-server src"
},
"license": "BSD",
"devDependencies": {
"mocha": "5.0.1",
"puppeteer": "^2.1.0"
},
"dependencies": {
"chai": "^4.2.0",
"http-server": "^0.12.1",
"mocha": "5.0.1"
}
}


cat test/test-login.spec.js


const puppeteer = require('puppeteer');
async function main(){
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setViewport({width: 1200, height: 720})
await page.goto('https://qto.fi/qto/login', { waitUntil: 'networkidle0' });
// wait until
await page.type('#email', 'test.anonymous.user@gmail.com');
//await page.type('#pass', 'secret');
// click and wait for navigation




await page.waitFor(1000);
//await frame.waitFor(1000);
await Promise.all([
page.click('#butLogin'),
page.waitForNavigation({ waitUntil: 'networkidle0' }),
]);


await page.type('#inp_srch_box', 'add');
await page.type('#inp_srch_box',String.fromCharCode(13));
}


main();

这对我有用

我在代码中使用了 await page.keyboard.press('Enter');,它对我来说非常好用。