Предполагам, че проблемът, който виждате, е, че винаги изпълнява частта if и никога частта else. Вашият проблем може да бъде опростен до:
browser = 'ie'
if browser == 'firefox' or 'chrome'
puts 'mouseover'
else
puts 'hover'
end
#=> "mouseover" (which is not as desired)
Проблемът е, че вашият оператор if казва, че (браузърът трябва да е равен на "firefox") ИЛИ (низът "chrome" трябва да е верен). Последното винаги ще бъде вярно, поради което винаги се изпълнява частта if.
Трябва да направите:
browser = 'ie'
if browser == 'firefox' or browser == 'chrome'
puts 'mouseover'
else
puts 'hover'
end
#=> "hover" (as desired)
Може да се напише и по-добре като:
browser = 'ie'
if ['firefox', 'chrome'].include?(browser)
puts 'mouseover'
else
puts 'hover'
end
#=> "hover" (as desired)
Има и втори проблем - @browser.name
никога няма да бъде 'firefox' или 'chrome'. Browser#name връща символ, а не низ. Например с Firefox:
require 'watir'
browser = Watir::Browser.new :firefox
puts browser.name.class
#=> Symbol
p browser.name
#=> :firefox
Трябва да съпоставите @browser.name
със съответните символи - :firefox
и :chrome
.
Така че, като вземем тези две концепции и се върнем към вашия оригинален код, това може да бъде коригирано с:
if [:firefox, :chrome].include?(@browser.name)
@browser.span(:text => /#{tab_name}/i).parent.fire_event 'mouseover'
else
@browser.span(:text => /#{tab_name}/i).parent.hover
end
person
Justin Ko
schedule
29.11.2013