2012-06-15 3 views
1

Я довольно новичок в Watir.watir webdriver определение типа объекта

Я искал способ обнаружения типа объекта, полученного подпрограммой, , чтобы применить правильный метод. Конечный результат должен быть что-то вроде:

sub clickOnElement (elementId, elementRef) 
element= browser.(elementId.to_sym, elementRef) 
case TypeOfElement (element) 
    :link   element.click 
    :radio   element.set 
    :checkbox  element.set 
    :list   .... 
end 
end 

Мой вопрос о фактической реализации TypeOfElement().

Любое предложение или указатель ценится: спасибо заранее

Sergio

+0

Просто из любопытства, зачем вам это нужно? Обычно вы знаете, какой тип элемента вы работаете, поэтому можете напрямую вызывать соответствующие методы. –

ответ

3

Вы можете сделать заявление случая на основе класса переменного элемента (после преобразования его в подтип). Таким образом, вам не нужно реализовывать собственный метод TypeOfElement.

Что-то вроде:

e = browser.element 
case e.to_subtype 
    when Watir::CheckBox 
     e.set 
    when Watir::Anchor #Link 
     e.click 
    else 
     raise(e.class.to_s + ' not handled') 
end 

Примечание:

  • browser.element возвращает первый элемент, который будет HTML тег. Поэтому в вышеприведенном случае оператор вызывает исключение. Я предполагаю, что e будет чем-то более конкретным.
  • В начале утверждения case это просто «e.to_subtype» вместо «e.to_subtype.class» (как описано в How to catch Errno::ECONNRESET class in "case when"?).
+0

Спасибо, Джастин, это было бы идеально. К сожалению, когда я запускаю мой код так: е = $ browser.element случай е когда Watir :: Ссылка .... когда Watir :: Checkbox .... – sbos61

+0

Попробуйте обновленный код. Исходный код был неправильно использован Watir вместо Watir-Webdriver. –

+0

Да, это работает. Мне потребовалось некоторое время, чтобы проверить это в моей среде. Спасибо!! – sbos61

Смежные вопросы