ошибка подъема pyppeteer, если я вызываю щелчок второй раз - PullRequest
0 голосов
/ 20 февраля 2020

Код прост

async def main(target, region="someplace"):
    browser = await launch(headless=False)
    page = await browser.newPage()
    url = f'https://somesite/search?q={target}&r={region}'
    await page.goto(url)
    links = await page.xpath("//a[contains(@class,'link')]")
    # len of links is ~50, each one is clickable
    await links[2].click()
    await links[3].click()

    p = input()

asyncio.get_event_loop().run_until_complete(main("somesht"))

если я вызываю click () только по второму или первому элементу по отдельности - все идет хорошо, если я вызываю click () для любых двух элементов, я получаю ошибку

Traceback (most recent call last):
  File "/Users/oleg/Documents/PP/someproject/test.py", line 24, in <module>
    asyncio.get_event_loop().run_until_complete(main("somesht"))
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 579, in run_until_complete
    return future.result()
  File "/Users/oleg/Documents/PP/someproject/test.py", line 14, in main
    await links[3].click()
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/element_handle.py", line 168, in click
    await self._scrollIntoViewIfNeeded()
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/element_handle.py", line 88, in _scrollIntoViewIfNeeded
    }''', self)
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/execution_context.py", line 55, in evaluate
    pageFunction, *args, force_expr=force_expr)
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/execution_context.py", line 109, in evaluateHandle
    _rewriteError(e)
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/execution_context.py", line 239, in _rewriteError
    raise error
  File "/Users/oleg/Documents/PP/someproject/venv/lib/python3.7/site-packages/pyppeteer/execution_context.py", line 106, in evaluateHandle
    'userGesture': True,
pyppeteer.errors.NetworkError: Protocol error Runtime.callFunctionOn: Target closed.

Цель - открыть каждую ссылку на отдельной странице и отправить страницу в другую функцию для обработки. Вопрос в том, что пойдет не так и как нажимать более одного раза на страницу

...