Кукольник нажмите Enter при поиске типа ввода - PullRequest
0 голосов
/ 31 октября 2019

Я хочу нажать клавишу ввода, после заполнения ввода, но ничего не происходит, это не ссылка или кнопка, которую нужно нажать

<div class="search-input">
    <a class="search machin" style="display:none;z-index: 0;position: absolute;"></a>
    <input type="search" id="global-search"> //events jquery keypress and keyup
    <a class="close-search" style="z-index: 0;">
       <i class="m times"></i>
    </a>
</div>
jquery : function(t) {
  return "undefined" != typeof w && w.event.triggered !== t.type ? w.event.dispatch.apply(e, 
arguments) : void 0
}

Я подтверждаю скриншотом, что тип ввода = "search" былхорошо заполнены, и это.

await page.focus('#global-search');
await page.type('#global-search',"string to find"); //it works

или await page.$eval('#global-search', (el, value) => el.value = value, myLocalValue);//it works

я пробую это: await page.keyboard.press("Enter"); или await page.keyboard.down('Enter'); await page.keyboard.up('Enter');

прессакнопка Enter должна завершить URL https://lesite.fr/recherche?q=string_to_find, но это не тот случай, когда URL остаётся отчаянно https://lesite.fr/

Я должен найти результат поиска в

<div class="h-container">
    <div class="h">
        <div class="h-image SearchBanner">
            <img src="/-/media/_banner.jpg">
            <div class="rot-block"></div>
        </div>
        <div class="h-details">
            <h1>16 RÉSULTATS</h1>
            <div class="search-result">HERE THE RESULT<span class="secondary-title">string to find</span></div>
        </div>
    </div>
</div>

проблема в том, что URL не завершен

Я много читаю в поиске Google ( Нажав кнопку Enter в кукловоде .)

Справка

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019
        await page.focus('#header > div.component.container.float-wrapper > div.search > div > div.search-input');
         await page.type('#header > div.component.container.float-wrapper > div.search > div > div.search-input',"PSG");
        await page.keyboard.press('ArrowRight');
        await page.focus('#header > div.component.container.float-wrapper > div.search > div > div.search-input');
        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

работает через 30 часов после поиска

Большое спасибо за ваш ответ

0 голосов
/ 03 ноября 2019

В этом рабочем примере он будет искать Google по тегу поиска ввода HTML.

Попробуйте этот обходной путь и скажите, решит ли это вашу проблему. Попробуйте также каждый комментарий 4 строки над ним.

const puppeteer = require ('puppeteer')

;(async () => {

    const browser = await puppeteer.launch ({
        headless: false,
        devtools: true,
        slowMo: 50 // delete this if you like
    })
    const contentHTML = '<form name="search" method="get" action="https://www.google.com/search?"><div class="search-input"><a class="search machin" style="display:none;z-index: 0;position: absolute;"></a><input type="search" id="global-search" name="q"><a class="close-search" style="z-index: 0;"><i class="m times"></i></a></div></form>'
    const page = (await browser.pages())[0]
    // const google = await page.goto('https://www.google.com', {waitUntil: 'networkidle2'})
    const setContent = await page.setContent(contentHTML, {waitUntil: 'domcontentloaded'})

    const focusSearch = await page.focus('#global-search')
    const typeSearch = await page.type('#global-search',"string_to_find") //it works

    const searchSubmitted = await Promise.all([
        page.waitForNavigation({waitUntil: 'domcontentloaded'}),

        // const pressReturn = page.type('#global-search', '\r'),
        // const pressReturn = page.type('#global-search', String.fromCharCode(13)),
        // const pressReturn = page.keyboard.type('\n'),
        // const pressReturn = page.keyboard.down('NumpadEnter'),
        const pressReturn = page.keyboard.press('Enter') // 4 LINES ABOVE ALSO WORKS, TRY THEM ALL
    ])

    // 'Enter': {'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r'}

    // <div class="search-result">HERE THE RESULT<span class="secondary-title">string to find</span></div>

    // const searchString = await page.$eval('span.secondary-title', el => el.innerText);


})()
...