У мене дуже погано закодований JSP, який я намагаюсязапустити автоматизацію на. Існує серія прапорців з іменами (без ідентифікаторів) "delete [x]", де X - номер пункту заповненого елемента. Я намагаюся встановити всі прапорці, щоб я могла видалити кожен запис. Ось що я маю
check_boxes = []
check_boxes.push(@browser.checkbox(:xpath, "//input[contains(@name,"delete")]"))
puts check_boxes.size
check_boxes.each do |check_box|
check_box.set
Проблема в цьому полягає лише в тому, що він вибираєперший екземпляр (вузол), який відповідає xpath для скидання в масив. Я знаю, що можу повторити через xpath, додавши до вузла індекс, а потім поставити порятунок, який відкидає мене, коли індекс виходить за межі, але це здається брудним способом зробити це.
Я знаю, що є тег "як", який отримує набір якорів, і мені було цікаво, чи існує такий спосіб, як взяти весь вибір прапорців
Відповіді:
3 для відповіді № 1Я не думаю, що проблема полягає в самій xpath. Це @browser.checkbox
це викликає повернення лише першого прапорця.
Якщо ви хочете, щоб усі відповідні прапорці, слід використовувати (помітити множину):
@browser.checkboxes
Зауважте, що checkboxes
повертає колекцію прапорців. Якщо ви робите щось по-справжньому фантазійне, вам зазвичай не потрібно перетворювати його в масив.
Ви можете просто зробити:
@browser.checkboxes(:name => /delete/).each do |checkbox|
checkbox.set
end