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

Selenide, dropdown, выбор первого значения в списке

Теги: #<Tag:0x00007f748b0ec750> #<Tag:0x00007f748b0ec638> #<Tag:0x00007f748b0ec570> #<Tag:0x00007f748b0ec3b8>

Господа, здравствуйте !
Необходимо, чтобы в открывшимся списке выбиралось (кликалось) первое значение

UeChU

<div class="Select__menu css-26l3qy-menu" data-test-id="sellBasicInfoForm_make_temp_menu">
<div class="Select__menu-list css-11unzgr">
<div class="Select__option Select__option--is-focused css-1n7v3ny-option" id="react-select-2-option-0" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_ABARTH" data-test-value="60"><div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">Abarth</div><
/div><div class="Select__option css-yt9ioa-option" id="react-select-2-option-1" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_AC" data-test-value="115"><div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">AC</div></div><div class="Select__option css-yt9ioa-option" id="react-select-2-option-2" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_ACURA" data-test-value="91"><div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">Acura</div></div>
<div class="Select__option css-yt9ioa-option" id="react-select-2-option-3" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_AIXAM" data-test-value="104">
<div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">Aixam</div>
</div><div class="Select__option css-yt9ioa-option" id="react-select-2-option-4" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_ALFA_ROMEO" data-test-value="16"><div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">Alfa Romeo</div>
</div><div class="Select__option css-yt9ioa-option" id="react-select-2-option-5" tabindex="-1" data-test-id="sellBasicInfoForm_make_temp_option_MAKE_ALPINA" data-test-value="39"><div class="SelectField__SingleLabel-u2vi9c-8 fDpiAL">ALPINA</div>

Пробовал:

 $("[data-test-id='sellBasicInfoForm_make_temp_menu']").selectOption(1);

Не работает этот способ

Вариант

$("[id='react-select-2-option-0']").click();

Тоже не годится, так как первым в списке может оказаться и Abarth и BMW и ZAZ

  1. Первый способ не работает потому что это не select. Первый способ работает только с такой версткой
<select id="cars">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
  1. Не совсем понятно что вы хотите, так как первый способ тоже выберет первый айтем как и второй. Если вы хотите кликнуть на конкретную модель, тогда ищите по тексту с помощью Xpath
//*[@data-test-id='sellBasicInfoForm_make_temp_menu']//*[text()='Abarth'] или 
//*[@data-test-id='sellBasicInfoForm_make_temp_menu']//*[contains(text(),'Abarth')]

Хочу чтобы был клик по первому значению в списке
Оно может быть рандомное
Заранее не известно какая марка будет на первом месте

Кликнуть по первому элементу в списке, но это не годится так как там может быть что угодно. По идее ваш второй вариант должен подходить, он игнорирует марку и всегда будет выбирать первый элемент. А чтоб выбирать по марке вам даже поиск по тексту не нужен, у вас есть тест атрибут data-test-id

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

У меня тест генерирует рандомную букву, которая пишется в инпуте
Исходя из этого постоянно генерируется разный список марок
Мне надо кликнуть по той марке, которая в списке будет первой

Все верно, ваш второй способ должен работать, это селектор будет первым вне зависимости от марки id="react-select-2-option-0"

нет.
id=“react-select-2-option-0” - это ID именно Arbath,

Сделал так
$x("(//*[@data-test-id=‘sellBasicInfoForm_make_temp_menu’]) [1]").click();
Выбирает марку, но рандомно
Я просто с Xpath вообще не дружу. Я его до этого почти нигде не применял

Попробуйте так

(//*[@data-test-id='sellBasicInfoForm_make_temp_menu']//*[contains(@class, 'Select__option')])[1]
1 Симпатия

Виктор, огромное спасибо !