Pressing Enter button in puppeteer

前端 未结 6 1040
面向向阳花
面向向阳花 2020-12-24 10:57

Pressing enter in puppeteer doesn\'t seem to have any effect. However, when I press other keys, it does what it should. This works:

await page.press(\'Arrow         


        
相关标签:
6条回答
  • 2020-12-24 11:34

    Its page.keyboard.press()

    Reference: https://pptr.dev/#?product=Puppeteer&version=v3.0.0&show=api-keyboardpresskey-options

    Find keynames and keycodes at https://github.com/puppeteer/puppeteer/blob/master/src/USKeyboardLayout.js

    0 讨论(0)
  • 2020-12-24 11:35

    page.keyboard.press():

    You can use page.keyboard.press() to simulate pressing the enter key. Any of the following options should work:

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

    Additionally, you can use use a combination of page.$() and elementHandle.press() to focus on an element before pressing enter:

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

    Furthermore, you can use page.type():

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

    page.keyboard.type():

    Likewise, you can use page.keyboard.type():

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

    page.keyboard.sendCharacter():

    Another alternative method would be to use the page.keyboard.sendCharacter() method:

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

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

    You can also use a combination of page.keyboard.down() and 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');
    
    0 讨论(0)
  • 2020-12-24 11:38
    await page.type(String.fromCharCode(13));
    

    Using this site I noticed that page.type dispatches beforeinput and input events, but page.press doesn't. This is probably a bug, but fortunately sending the enter keycode (13) seems to work, so we can work around it for now.

    0 讨论(0)
  • 2020-12-24 11:47

    I've used page.keyboard.press('Enter'); usually :) Works for me.

    Have a look at the documentation here. I think you should use .keyboard before .press for it to work properly.

    0 讨论(0)
  • 2020-12-24 11:51

    await page.keyboard.press('Enter'); This work for me

    0 讨论(0)
  • 2020-12-24 11:55

    short answer it might be a good idea to attach to the input control first :

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

    Long answer ...

      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();
    
    0 讨论(0)
提交回复
热议问题