t.me/atinfo_chat Telegram группа по автоматизации тестирования

Codeception. Проверка с возвратом булева значения

Задача:

Сделать условие с проверкой:
Если элемент есть на странице, тогда выполняем тест
Если элемента нет, тогда выполняем действия по созданию этого элемента

Пробовал такой код:

        if ($I->canSeeElement('tbody>tr')) {
            $I->comment('Element present');
        }

Тест с падает, если элемент не виден. Что можно сделать?

Коротко так:
1 - Такое делать нельзя
2 - Ветвление в тестах - зло
понятно что такой коментарий не полезен, просто сам через это прошел

Проблема не только с данным примером (выбрал самый простой)
Есть другой пример:
В таблице несколько строк, строки расположены в случайном порядке. Нужно через цикл+условие перебрать все строки (td:nth-child(n)), пока не найдём нужную (например с необходимым текстом) и потом уже работать с этим локатором.

В этом случае учим xpath и находим искомый элемент сразу по тексту.

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

Ладно теперь по делу
функции в тестах отдают нул если выполнилась успешно
вот я для вас подебажил

короче если в вашем ифе оно не увидит стрелочки то упадет тест потому как не увидело елемент, и кодесепшн об этом отрапортует

как я решал эту проблему когда был молодой, есть в кодесепшин фукции Граб, я грабил значение запихивал его в переменную, и сравнивал
как то так

$test = $I->grabValueFrom(‘tbody>tr’);
if ($test == стрелочки){
$I->comment(‘Element present’);
}

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

А вы гляньте на DOM properties у td и tr - там есть “сюрпризы”.