Pyppeteer ведет себя по-разному в Linux и Windows

Я имею pyppeteer код, который просматривает. Давайте предположим, что это только нажимает на a теги.

Он отлично работает на моей локальной машине с Windows, но ломается всякий раз, когда я запускаю его удаленно на сервере Linux. Так же conda env тот же код.

Соответствующая часть моего кода в упрощенном виде выглядит так:

async def act(self):
    element = self.element

    async def get_action():
        tag_name = await self.page.evaluate(
            'elem => { return elem.tagName.toLowerCase(); }',
            element)
        action = None
        if tag_name == 'a':
            action = element.click()
        else:
            action = async_pass()
        return action

    async def get_action_future():
        # gather syntax based on:
        # https://miyakogi.github.io/pyppeteer/reference.html#pyppeteer.page.Page.click
        action = await get_action()
        future_action = asyncio.gather(
            action,
            asyncio.sleep(0.001),  # dirty, dirty work-around, doesn't work nicely otherwise
        )
        waited_future = await asyncio.shield(future_action)
        if waited_future[0] is None:
            await self.page.waitForNavigation(self.wait_options)
        return None

    await get_action_future()

Он отлично работает на моей машине с Windows. Когда я запускаю его на компьютере с Linux, все начинается нормально, независимо от того, есть ли навигация или нет. Затем, после нескольких нажатий на навигацию, я получаю тайм-аут, а затем еще одну ошибку:

Error encountered: Navigation Timeout Exceeded: 20000 ms exceeded.
# then I trigger the element selector and the act method again, wrapped in try/except
Error encountered: Protocol Error (Runtime.callFunctionOn): Session closed. Most likely the page has been closed.

Я застрял на этой проблеме некоторое время и был бы признателен за любую помощь!

Моя среда включает в себя: python=3.6, pyppeteer=0.0.25,

Кстати, я заметил, что этот вопрос имеет аналогичную ошибку. НО ошибка другая ( Protocol error (Page.navigate): Target closed вместо Protocol Error (Runtime.callFunctionOn) ), а также окружающей среды ( node.js , Puppeteer , так далее.).

1 ответ

Кажется, что Pypepeteer больше не поддерживается. У меня возникла та же проблема, и я перешел на Selenium, который работает хорошо.

Другие вопросы по тегам