Как минимум, вы можете использовать локатор :index
, чтобы выбрать второй выбор даты. Локатор :index
определяет, какое из совпадающих элементов использовать. Например, index: 0
выбирает первое совпадение (и является значением по умолчанию). index: 1
выбирает второй матч, и т.д.
выбрать второй элемент выбора даты будет:
browser.img(:class => "ui-datepicker-trigger", :index => 1).click
Недостатком :index
локаторы является то, что они неожиданно сломаться, когда будут добавлены другие подобные элементы. Например, добавление другого выбора даты до даты инструкции приведет к тому, что вышеуказанный код обновит неверный выбор даты. Лучшим подходом было бы найти сборщик дат, относящийся к дате поставки.
Например, HTML может быть как:
<ul>
<li>
Instruction Date:
<input type="text" id="instruction_date">
<img class="ui-datepicker-trigger">
</li>
<li>
Delivery Due Date:
<input type="text" id="delivery_due_date">
<img class="ui-datepicker-trigger">
</li>
</ul>
В этой разметке альтернатива ищет второй выбор даты, чтобы посмотреть на выбор даты в том же li
как поставки дата поле. Такой подход может быть более надежным для будущих изменений:
browser.text_field(id: 'delivery_due_date').parent.img(class: 'ui-datepicker-trigger').click
Спасибо за помощь @ Justin Ko !!! –