将 chromedriver 更新到版本 119 后,无法使用 Selenium+Python 隐藏浏览器模式窗口

Can’t hide the browser modal window using Selenium+Python after updating the chromedriver to version 119

提问人:DandyCat 提问时间:11/15/2023 最后编辑:DandyCat 更新时间:11/18/2023 访问量:64

问:

我非常需要你的帮助!我在 Gitlab CI\CD 中使用 Selenium+python+pytest 编写了自动测试。将 Chrome 以及相应的 Chrome 驱动程序更新到版本 119 后,不再使用注册页面上指定的 Web 驱动程序选项阻止弹出模式浏览器窗口。若要使用页面元素,需要取消它或阻止其外观。因此,由于模式窗口,测试看不到注册页面的元素。在 Chrome 版本 118 中,测试在以下选项中没有问题:

def driver() -> WebDriver:
    print("\nStart browser for test..")
    options=Options()
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-gpu')
    options.add_argument('--disable-browser-side-navigation')
    options.add_argument('--disable-infobars')
    options.add_argument('--disable-extensions')
    options.add_argument('--start-maximized')
    options.add_argument('--disable-notifications')
    options.add_argument('--disable-translate')
    browser = webdriver.Remote(
        command_executor='http://selenium__standalone-chrome:4444/wd/hub',
        options=options)
    yield browser
    print("\nQuit browser")
    browser.quit()

我的gitlab-ci.yml:

image: python:3.10.0
default:
  tags:
    - almalinux8
    - common
    - dev-runner05
    - devops
    - docker
stages:
  - test

.job_template:
  before_script:
    - pip install --upgrade pip
    - pip install -r requirements.txt
  script:
    - pytest -s -v --tb=native 

e2e:remote:chrome:
  extends: .job_template
  services:
    - selenium/standalone-chrome

Chrome浏览器的模式窗口如下所示:在此处输入图像描述

所以我尝试使用这段代码来关闭模态窗口:

webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()

还有这个:

alert=driver.switch_to.alert
alert.dismiss()

但这些代码什么也做不了。我还尝试使用自动测试模块 pyautogui 和键盘,但它们不适用于 Gitlab CI\CD,仅适用于本地启动的 Chrome 浏览器。使用 pyautogui 时,它是 CI\CD 错误:


ImportError while loading conftest '/builds/luxms-bi/luxms-bi-data/Autotests/Sales/conftest.py'.
Autotests/Sales/conftest.py:31: in <module>
    import pyautogui
/usr/local/lib/python3.10/site-packages/pyautogui/__init__.py:246: in <module>
    import mouseinfo
/usr/local/lib/python3.10/site-packages/mouseinfo/__init__.py:223: in <module>
    _display = Display(os.environ['DISPLAY'])
/usr/local/lib/python3.10/os.py:679: in __getitem__
    raise KeyError(key) from None
E   KeyError: 'DISPLAY'

使用键盘时,错误:FileNotFoundError: [Errno 2] No such file or directory: 'dumpkeys'

python 硒网络驱动程序 selenium-chromedriver cicd

评论

1赞 Infern0 11/15/2023
这看起来像基本的身份验证弹出窗口,您必须处理它才能继续。这意味着您必须输入用户名/密码。看看这个: stackoverflow.com/a/70559122/10413416
0赞 DandyCat 11/17/2023
通过添加以下内容解决了该问题:options.add_argument('--headless')

答:

-1赞 DandyCat 11/17/2023 #1

通过添加以下内容解决了该问题:

options.add_argument('--headless')