如何在 Python 中运行自动化 Selenium 测试时禁用这样的 Chrome 弹出窗口?

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

我目前正在为我公司的一个大型 Django 项目编写自动化测试套件。一切都很顺利,直到我更新了 Chrome (v.125.0.6422.142) 和 Chromedriver (v.125.0.6422.141)。当我运行测试时,Chrome 提示从打开 Chrome 菜单的垂直省略号中弹出:

Stupid message messing up my tests

我检查了自定义 GPT(使用 GPT-4),看看这是否会导致潜在问题,并确认(无论其价值)该弹出窗口确实会对我的测试造成干扰。但是,我不确定如何摆脱它。

我浏览了 Stack OverFlow、GPT 和 Github Copilot,并在我的设置中实现了以下参数:

def setUpClass(cls):
        super().setUpClass()

        if os.environ.get('ENVIRONMENT') == 'LOCAL':

            # Retrieve the path from an environment variable
            chromedriver_path = os.environ.get('CHROMEDRIVER_PATH')
            if not chromedriver_path:
                raise ValueError("The CHROMEDRIVER_PATH environment variable must be set.")
            chrome_service = Service(executable_path=chromedriver_path)
            
            # Option to run in headless mode
            if os.environ.get('HEADLESS') == 'True':    
                print("Running in headless mode.")
                chrome_options = Options()
                chrome_options.add_argument('--headless')
                chrome_options.add_argument('--enable-logging')
                cls.selenium = webdriver.Chrome(service=chrome_service, options=chrome_options)
            else:
                chrome_options = Options()
                chrome_options.add_argument('--disable-first-run-ui')
                chrome_options.add_argument('--no-first-run')
                chrome_options.add_argument('--disable-extensions')
                chrome_options.add_argument('--enable-logging')
                chrome_options.add_argument('--disable-popup-blocking')
                chrome_options.add_argument('--disable-notifications')
                chrome_options.add_argument('--disable-infobars')
                chrome_options.add_argument('--disable-blink-features=AutomationControlled')
                cls.selenium = webdriver.Chrome(service=chrome_service, options=chrome_options)
                cls.selenium.maximize_window()
                print("Running in headful mode")

条件语句是因为 DevOps 的实现逻辑(我们是初创公司的初级开发人员),我通常在“Headful 模式”下运行测试。无论我实现了什么,弹出窗口仍然会显示并干扰我的测试。即使是使用 XPATH 进行简单的按钮选择也不起作用,并且始终会超时或抛出这个模糊的错误,除了 Chromedriver 和 Chrome 之间潜在的断开连接之外,我找不到任何有用的信息:

[13860:24408:0604/071320.491:错误:interface_endpoint_client.cc(722)] 消息0被接口blink.mojom.WidgetHost拒绝

但是考虑到我的 ChromeDriver 和 Chrome 版本,我坚信这个弹出窗口是我遇到麻烦的原因。如有任何帮助,我们将不胜感激!

python django google-chrome selenium-webdriver selenium-chromedriver
1个回答
0
投票

防止弹出窗口的一种方法是使用隐身模式运行:

chrome_options.add_argument("--incognito")

访客模式也有效:

chrome_options.add_argument("--guest")
© www.soinside.com 2019 - 2024. All rights reserved.