Pyppeteer how to login on page with type

百般思念 提交于 2021-01-29 17:17:57

问题


I was using selenium + chrome driver for my python telegram bot deployed on linux server with docker. Everything is working, but its not supporting async so my app can't do anything else during scrapping. I heard about Pyppeteer, but having some troubles with getting page i need to scrape. Webpage requires me to login. Here are steps:

  1. Open page.
  2. Click on auth button:

<button class="btn btn-outline-warning kt-font-dark mr-2" type="button" id="btn_auth"> <i class="fa fa-key"></i> Enter </button>

  1. After logining div appears on page, and it has next 2 inputs:

<input type="email" class="form-control pd-y-12" name="login[email]" placeholder="Email">

<input type="password" class="form-control pd-y-12" name="login[password]" placeholder="password">

  1. After inputing email and password, login button should be clicked.

<button class="btn btn-warning btn-block mg-b-10" type="submit" name="do_login">login</button>

Here i am trying to do:

    async def main(url):
        browser = await launch(headless=False)
        page = await browser.newPage()
        await page.goto(url)
        await asyncio.gather(
            page.waitForSelector('button[class="btn btn-outline-warning kt-font-dark mr-2"]', timeout=60000),
            page.click('button[class="btn btn-outline-warning kt-font-dark mr-2"]'),
            page.waitForSelector('button[class="btn btn-warning btn-block mg-b-10"]', timeout=60000),
            page.type('[type=email]', 'example@gmail.com'),
            page.type('[type=password]', 'example'),
            page.click('button[class="btn btn-warning btn-block mg-b-10"]')
        )
        await browser.close()
        return 

Right now can find and click first button, input doesnt work. Also need to return page HTML content

来源:https://stackoverflow.com/questions/64929198/pyppeteer-how-to-login-on-page-with-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!