我目前正在为我公司的一个大型 Django 项目编写自动化测试套件。一切都很顺利,直到我更新了 Chrome (v.125.0.6422.142) 和 Chromedriver (v.125.0.6422.141)。当我运行测试时,Chrome 提示从打开 Chrome 菜单的垂直省略号中弹出:
我检查了自定义 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 版本,我坚信这个弹出窗口是我遇到麻烦的原因。如有任何帮助,我们将不胜感激!
防止弹出窗口的一种方法是使用隐身模式运行:
chrome_options.add_argument("--incognito")
访客模式也有效:
chrome_options.add_argument("--guest")