在木偶操纵者中按Enter键

时间:2017-09-27 07:48:24

标签: javascript node.js puppeteer

在木偶操作中按Enter键似乎没有任何效果。但是,当我按下其他键时,它会做它应该做的事情。 这有效:

await page.press('ArrowLeft');

这不是:

await page.press('Enter');

这是输入的样子:

enter image description here

有什么想法吗?

编辑:我也尝试过page.keyboard.down& page.keyboard.up可以肯定。

6 个答案:

答案 0 :(得分:16)

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

查看文档here。我认为您应该在.keyboard之前使用.press才能使其正常运行。

答案 1 :(得分:15)

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

使用this site我注意到page.type发送了beforeinputinput个事件,但page.press没有。这可能是一个错误,但幸运的是发送回车键代码(13)似乎有效,所以我们现在可以解决它。

答案 2 :(得分:7)

page.keyboard.press():

您可以使用page.keyboard.press()模拟按下Enter键。以下任何选项均应起作用:

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

elementHandle.press():

此外,在按Enter键之前,可以结合使用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

page.type():

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

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

page.keyboard.type():

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

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

page.keyboard.sendCharacter():

另一种替代方法是使用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');

答案 3 :(得分:4)

简短回答,最好先附加到输入控件:

    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();

答案 4 :(得分:1)

答案 5 :(得分:0)

等待page.keyboard.press('Enter');这对我有用