Неопределенный индекс Codeception: ошибка ELEMENT

Я использую Codeception для приемочного тестирования. На моем локальном компьютере у меня нет проблем с запуском тестов с селеном и хромированным драйвером. До 1 недели он также отлично работал на моем git, но теперь появляется эта ошибка.

"[PHPUnit\Framework\Exception] Неопределенный индекс: ЭЛЕМЕНТ"

локальный работает без ошибок.

Я уже искал эту ошибку и нашел подсказку, что я должен запустить селен с «-enablepassthrough false». Но это на самом деле не работает.

До этого 1 неделя при всех тех же настройках работает нормально.

это мой accept.suite.yml:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'https://website.com' 
            host: 'selenium__standalone-chrome'
            port: 4444
            browser: chrome 
            window_size: 1920x1080 
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
2 503
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это сообщение об ошибке...

[PHPUnit\Framework\Exception] Undefined index: ELEMENT

... подразумевает, что у ChromeDriver от click() до кодецепция возникла проблема.

Согласно комментарий @reinholdfuereder в обсуждении facebook/php-webdriver — поддержка протокола W3C WebDriver:

  • При использовании протокола W3C по умолчанию тест Codeception (v2.5.6) не проходит с Undefined index: ELEMENT в waitForElement() операции.
  • При использовании устаревшего протокола тест завершается успешно для операции waitForElement(), за которой следует, по-видимому, также успешная операция click(), но происходит сбой в операции waitForElementNotVisible().
  • click() операция Codeception переводится в команду clickElement WebDriver, которая, по-видимому, больше не поддерживается ChromeDriver v75.

Решение

Если вы используете ChromeDriver v75.x и Хром v75.x и видите эту ошибку, вам необходимо передать дополнительный chromeOptionsw3c, установленный в true.


Outro

Вы можете найти пару подробных обсуждений в:

Как объяснил @DebanjanB, установка указанной опции является решением, и это то, что вы получаете, обновляя facebook/php-webdriver до версии >= 1.7.0.

Я думаю, что еще более надежным решением (или привычкой) для вашего приложения является использование определенного образа докера.

Ваш yaml заставляет меня предположить, что вы используете образ докера selenium/standalone-chrome. В своем последнем выпуске (3.141.59-palladium) они обновили включенную версию Chrome с 74 до 75 (см.: https://github.com/SeleniumHQ/докер-селениум/релизы).

На вашем локальном компьютере, вероятно, все еще работает более старая версия с Chrome 74, поэтому проблем нет. Но всякий раз, когда вы перестраиваете докер-машину (например, при использовании какой-либо среды CI), вы получаете последнюю версию. В данном случае это новая версия Chrome. Что «заставляет» вас также обновить вашу машину php с помощью нового facebook/php-webdriver.

Я бы предложил указать версию изображения, чтобы предотвратить эти нежелательные побочные эффекты, например

image: selenium/standalone-chrome:3.141.59-oxygen

или, если вы уже запустили его с Chrome 75, 3.141.59-palladium.

Для Chrome/ChromeDriver v79 помогла установка w3c на false в acceptance.suite.yml:

modules:
  enabled:
    - WebDriver:
        capabilities:
          chromeOptions:
            w3c: false

Это единственный вариант, который работает для меня на Mac с Chrome.

Ibrahim.H 13.01.2021 21:01

кто-нибудь знает, как объявить это для FF?

Robert Sinclair 01.12.2021 22:16

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