Как заставить выпадающего работать в кукловода? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь очистить данные от https://my.castlighthealth.com/corona-virus-testing-sites/

Имеется раскрывающийся список "STATE". Когда я нажимаю на элемент, он показывает данные справа.

Я пытаюсь эмулировать то же самое с кукловодом. js, но даже после выбора элемента я не вижу результатов в окне.

Вот мой код

 const result = await page.evaluate(() => {
        const array = []
        const arrayVal = []
        var state = document.getElementById("state");
        let stateLength = state.options.length
        stateLengthI = stateLength
        for (let i = 1; i < stateLength; i++) {
            let value = state.options[i].innerHTML
            arrayVal.push(state.options[i].value)
            array.push({ state: value })
        }
        return arrayVal
    })


    for (let i = 0; i < 52; i++) {
        await page.select("#state", result[i]).then((res) => {
            console.log(res)
        })
    }

1 Ответ

0 голосов
/ 09 апреля 2020

Я сделал этот скрипт для вас и добавил требование выборки узла для запроса результатов выбора состояния

const puppeteer = require('puppeteer')
const fetch = require('node-fetch')

;(async () => {
    const browser = await puppeteer.launch({
        headless: false,
        devtools: false
    })
    const [page] = await browser.pages()
    await page.goto('https://my.castlighthealth.com/corona-virus-testing-sites/', { waitUntil: 'networkidle0', timeout: 0 })
    const result = await page.evaluate(() => {
        const array = []
        const arrayVal = []
        var state = document.getElementById("state");
        let stateLength = state.options.length
        stateLengthI = stateLength
        for (let i = 1; i < stateLength; i++) {
            let value = state.options[i].innerHTML
            arrayVal.push(state.options[i].value)
            array.push({ state: value })
        }
        return arrayVal
    })

    let bodySummary = ''

    for (let i = 0; i < 52; i++) {
        await page.select("#state", result[i]).then( res => {
            fetch(`https://my.castlighthealth.com/corona-virus-testing-sites/data/result.php?state_for=${res[0]}&v=06042020925`)
            .then(res => res.text())
            .then(body => {
                bodySummary+= body
                if (i === 51) {
                    console.log(bodySummary)
                }
            })
        })
    }

})()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...