如何在 nodriver (python) 中处理警报?

问题描述 投票:0回答:1

我正在将工作从使用无法检测到的 Chrome 驱动程序转换为使用 nodriver 库 (https://github.com/ultrafunkamsterdam/nodriver)。我需要帮助处理警报,因为我在 API 文档中找不到相关信息。

这是我想要实现的目标的具体示例:

  1. 单击按钮。
  2. 等待警报在指定时间(例如 10 秒)内出现。
  3. 如果在指定时间内出现警报:
    • 打印警报文本。
    • 接受警报。
  4. 如果在指定时间内没有出现警报,则不执行任何操作。

您能否提供有关如何使用 nodriver 完成此操作的指南或代码示例?

python selenium-webdriver selenium-chromedriver undetected-chromedriver
1个回答
0
投票

对不起我的英语...我来自巴西,希望你理解

在研究文档时我发现可以获取警报文本,但我不知道如何单击警报。所以,请参阅下面的代码:

import nodriver as uc
import asyncio

class NodriverAlert(): 
    def __init__(self):
        self.browser = None
        self.alert_message = ''

    async def js_alert_message(self, event: uc.cdp.page):
        if 'JavascriptDialogOpening' in str(type(event)):
            # print(f'Alert class return: {event}')
            self.alert_message = event.message
            print(f'The alert message is: {self.alert_message}')
     

    async def main(self):
        url = 'https://github.com/ultrafunkamsterdam/nodriver'
        self.browser = await uc.start()
        tab = await self.browser.get(url)

        # We'll need to add a handler
        tab.add_handler(uc.cdp.page, self.js_alert_message)
    
        # Now, create an alert
        await tab.evaluate('alert("Hello StackOverflow!!!")') 
        # After alert if we dont interact t

example = NodriverAlert()
asyncio.run(example.main())

通过上面的代码,我们得到警报文本,在某些情况下可以是 util,但不可能继续执行,因为 nodriver 在警报中停止。

© www.soinside.com 2019 - 2024. All rights reserved.