Справочная информация: я использую DSL для автоматического тестирования пользовательского интерфейса в Ruby, который называется Watir-Webdriver.
Я хочу написать очень многократно используемый метод, который проходит или не срабатывает, когда присутствует определенный элемент HTML.Вот что у меня есть:
require 'watir-webdriver'
require 'rspec'
b = Watir::Browser.new
def display_check(element_type,unique_element,expectation)
if expectation == "yes"
b.send(element_type).((:id or :class or :name or :value),/#{Regexp.escape(unique_element)}/).exists?.should == true
else
b.send(element_type).((:id or :class or :name or :value),/#{Regexp.escape(unique_element)}/).exists?.should == false
end
end
Я могу понять, что "div" в этом примере - это строка, переданная в качестве аргумента метода.Но в контексте dsl «div» (без кавычек) также является методом Watir-webdriver.Поэтому я думаю, что мне нужно каким-то образом преобразовать строку в подходящий метод watir-webdriver
В основном я хочу сделать следующее, чтобы определить, существует ли элемент.
display_check("div","captcha","no")
Поскольку яищите select_lists, divs, переключатели и т. д., было бы очень полезно указать тип элемента в качестве опции, вместо того, чтобы жестко кодировать его в методе.