Я использую watir-webdriver в проекте ruby для имитации действий пользователя в бизнес-системе.Чтобы выполнить задачу, мне нужно выбрать раскрывающееся поле, а затем выбрать один из вариантов.
Код, в котором отображаются элементы параметров:
<ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;">
<li class="rcbHovered rcbTemplate">
<ul>
<li style="width: 100%" class="gridcontrolcolumn">
Direct Debit
</li>
</ul>
</li>
<li class="rcbItem rcbTemplate">
<ul>
<li style="width: 100%" class="gridcontrolcolumn">
Invoice
</li>
</ul>
</li>
<li class="rcbItem rcbTemplate">
<ul>
<li style="width: 100%" class="gridcontrolcolumn">
Online Payment
</li>
</ul>
</li>
</ul>
Примечание. Я могу различать параметры, используя "описание" в коде.Однако я не могу использовать какие-либо средства поиска (например, class: / id: и т. Д. Для их идентификации в ruby.)
Существует ли выражение, в котором я могу идентифицировать описательный текст в конце?
Ранее я пытался использовать функцию send_keys, чтобы выбрать их, используя их заголовок, однако поле доступно только для чтения и не отвечает на send_keys.
Мой текущий (не функционирующий) код рубина выглядит следующим образом:
@browser.iframe(id: 'contentIFrame1')
.iframe(id: 'navLink{bd27b00e-3d5e-b7b5-0ddb-864216077292}AreaFrame')
.input(id: 'ctl00_MainContent_cboDefaultPaymentType_Input').wait_until_present.click
@browser.iframe(id: 'contentIFrame1')
.iframe(id: 'navLink{bd27b00e-3d5e-b7b5-0ddb-864216077292}AreaFrame')
.input(id: 'ctl00_MainContent_cboDefaultPaymentType_Input').li(class: '"gridcontrolcolumn" >
Direct Debit < /li>').click
Естественно, если я использую .li(class:"gridcontrolcolumn").click
, у меня будет возвращено слишком много значений.
Watir::Exception::UnknownObjectException: timed out after 30 seconds, waiting for #<Watir::LI: located: false; {:id=>"contentIFrame1", :tag_name=>"iframe"} --> {:id=>"navLink{bd27b00e-3d5e-b7b5-0ddb-864216077292}AreaFrame", :tag_name=>"iframe"} --> {:id=>"ctl00_MainContent_cboDefaultPaymentType_Input", :tag_name=>"input"} --> {:class=>"\"gridcontrolcolumn\" >\n Direct Debit < /li>", :tag_name=>"li"}> to be located
./features/step_definitions/create_DD_mandate.rb:65:in `/^Change the payment type to DD$/'
./features/create_DD_contact.feature:13:in `Then Change the payment type to DD'