Неопределенный индекс кодового восприятия: ошибка элемента - PullRequest
1 голос
/ 12 июня 2019

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

"[PHPUnit \ Framework \ Exception] Неопределенный индекс: ELEMENT"

локально работает нормально, без ошибок.

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

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

это мое принятие.suite.yml:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'https://website.com' 
            host: 'selenium__standalone-chrome'
            port: 4444
            browser: chrome 
            window_size: 1920x1080 

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

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

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

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

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

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

image: selenium/standalone-chrome:3.141.59-oxygen

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

0 голосов
/ 12 июня 2019

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

[PHPUnit\Framework\Exception] Undefined index: ELEMENT

... означает, что ChromeDriver * click() - Codeception имеет проблему.

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

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

Решение

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


Outro

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

...