Watir ищет более элегантное решение для проверки HTML-элементов - PullRequest
1 голос
/ 21 января 2011

Я ищу более элегантное решение для проверки того, что ряд элементов 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.

Кто-нибудь может предложить более элегантное и гибкое решение?

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Замените ваше дело с этим:

assert(browser.send(type.to_sym, :id, id).exists?)
1 голос
/ 21 января 2011

Akephalos

К счастью, мы нашли Акефалоса. Akephalos предоставляет драйвер Capybara, который позволяет запускать тесты интеграции с огурцом в автономном браузере HtmlUnit. HtmlUnit - это «браузер без графического интерфейса для программ Java». Он моделирует документы HTML и предоставляет API, который позволяет вам вызывать страницы, заполнять формы, щелкать ссылки и т. Д., Как вы делаете это в «обычном» браузере. С нашим ответвлением Akephalos для решения пары проблем, с которыми мы столкнулись на этом пути, мы приступили к работе с очень надежными, безголовыми тестами браузера.

HtmlUnit написан на Java, и Akephalos использует jruby-jars для запуска и взаимодействия с браузером HtmlUnit. Он имеет довольно хорошую поддержку JavaScript (он смог справиться со всем, что мы могли на него бросить, включая jQuery 1.4.2 и 1.4.3, jQuery Mobile и jQuery live).

редактировать: извлечено из http://robots.thoughtbot.com/post/1658763359/thoughtbot-and-the-holy-grail

...