Я ищу более элегантное решение для проверки того, что ряд элементов HTML виден в браузере.
У меня была идея создать CSV-файл с типом элемента и идентификаторами, прочитать его в массив и использовать его для проверки наличия элементов в браузере.
Таким образом, файл / массив CSV будет выглядеть примерно так:
"select","srch-op-select"
"text_field","srch-filter"
"button","srch-button"
"image","srch-showhide-icon"
"div","srch-showhide"
Тогда я подумал, что могу использовать оператор case для проверки, что-то вроде этого,
myElements.each do |row|
type = row[0]
id = row[1]
case type
when "button" : assert(browser.button(:id,id).exists?)
when "checkbox" : assert(browser.checkbox(:id,id).exists?)
when "div" : assert(browser.div(:id,id).exists?)
when "image" : assert(browser.image(:id,id).exists?)
when "label" : assert(browser.label(:id,id).exists?)
when "link" : assert(browser.link(:id,id).exists?)
when "radio" : assert(browser.radio(:id,id).exists?)
when "select" : assert(browser.select_list(:id,id).exists?)
when "span" : assert(browser.span(:id,id).exists?)
when "table" : assert(browser.table(:id,id).exists?)
else $log.debug "---Unsupported element type "+type
end
end
Очевидно, что это утверждение case будет большим и громоздким, если вы захотите охватить все поддерживаемые типы элементов или учитывать различные методы выбора элемента HTML.
Кто-нибудь может предложить более элегантное и гибкое решение?