Приемочный тест Codeception WebDriver не может щелкнуть элемент, который он видит

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

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

Нажмите на одну из четырех вкладок. Нажмите на кнопку, чтобы заполнить сетку. Выполните 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 ответ

Решение

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

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

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

$I->reloadPage();

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

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