Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Strict locators есть ли выигрыш в производительности?

codeception
locators
performance
Теги: #<Tag:0x00007f7b637027a0> #<Tag:0x00007f7b63702638> #<Tag:0x00007f7b637024f8>

(Dmitrii Gunchenko) #1

Есть ли реальный выигрыш в производительности при указании типа локатора? [‘css’ => …] [‘xpath’ => …] ?


(Ray Romanov) #2

Все зависит от сложности локатора, реальный выигрыш при обращении по ID элемента т.е. [‘id’ => ‘…’]


(vmaximv) #3

Это “интуитивные” выводы или вы реально исследовали этот вопрос. Если второе - можете поделиться методиками и “сухими” цифрами из результатов?


(Ray Romanov) #4

Сухие цифры не дам, а элементарный пример есть, когда обращаюсь к выпадающему списку для выбора по xPath то обращение к нему может занимать до 10 сек., если у этого списка есть id то обращение ([‘id’ => ‘…’]) фактически моментально. В итоге когда на такие списки были расставлены ID то итоговое время выполнения тестов упало с 44 мин. до 35мин.


(Dmitrii Gunchenko) #5

Я прошу прощения, возможно не так выразился, но суть вопроса не о том какой тип локатора быстрее, а есть ли смысл при использовании Codeception указывать тип локатора, будет ли разница между:

$i->click('#id');

и

$i->click(['css' => '#id']);

(vmaximv) #6

Буду весьма благодарен за пример + конфигурацию - т.к. такое время, затраченное на простой findElement я наблюдал пару лет назад, если не больше. Ну и код со счетов списывать не будем: когда, например, кто-то пытается вытянуть пару сотен элементов из ddl, что бы потом “весело” проитерировать среди них :slight_smile:


(Ray Romanov) #7

Таким способом '#id' я пользуюсь в $I->waitForElement либо ограничить место просмотра в $I->see('Удалить пользователя', '#tcontent'); в остальных случаях

$I->click(['id' => 'MWmodal-btn1']); 
$I->seeElement(['id' => 'select-all-items']);
$I->selectOption(['id' => 'objectsType'], 'Фотографии');

PS: CSS локаторами вообще не пользуюсь кроме случаев если их не избежать.