Приемочный тест Codeception WebDriver не может щелкнуть элемент, который он видит - PullRequest
0 голосов
/ 19 января 2019

Я посмотрел другие ответы на этот вопрос, но ни один из них не подходит. Моя очень странная версия проблемы.

Тестовый код находится в цикле, который выполняет те же операции на четырех вкладках (не вкладках браузера). Процесс такой:

Нажмите на одну из четырех вкладок. Нажмите на кнопку, чтобы заполнить сетку. Выполните 5 операций над сеткой. (повторите для каждой вкладки)

Все пять операций работают нормально первый раз в цикле. Второй раз в цикле третья операция завершается неудачно:

$I->clickWithRightButton("//div[text() = '" . oPageVariables::$namePrefix . 
    $name . "']");
$I->waitForElement("//span[text() = 'Change Category']");
$I->see('Change Category');
$I->wait(1);
$I->click("//span[text() = 'Change Category']");

Вот соответствующий HTML:

<span class="x-menu-item-text" id="ext-gen315">Change Category</span>

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

При щелчке правой кнопкой мыши открывается выпадающее меню, но действие щелчка не выполняется с «элементом не видно», хотя «$ I-> waitForElement» и I-> See работают нормально.

Наблюдая за экраном, элемент «Изменить категорию» определенно виден.

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

Любые подсказки приветствуются.

1 Ответ

0 голосов
/ 20 января 2019

Основываясь на предложении Naktibalda, я решил, что решил исходный вопрос, сделав текст в каждом раскрывающемся меню уникальным для каждой вкладки.

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

Единственное, что в итоге сработало, это добавило это в конце цикла:

$I->reloadPage();

Я считаю это ошибкой, но я не уверен, что это ошибка в CodeCeption, WebDriver или ExtJS 3.

...