class DotDiff::ElementHandler
Attributes
driver[RW]
Public Class Methods
new(driver, elements = DotDiff.xpath_elements_to_hide)
click to toggle source
# File lib/dotdiff/element_handler.rb, line 7 def initialize(driver, elements = DotDiff.xpath_elements_to_hide) @driver = driver @elements = elements end
Public Instance Methods
elements()
click to toggle source
# File lib/dotdiff/element_handler.rb, line 38 def elements @elements ||= [] end
hide()
click to toggle source
# File lib/dotdiff/element_handler.rb, line 12 def hide elements.each do |xpath| driver.execute_script(script(xpath, :hidden)) end end
script(xpath, visibility)
click to toggle source
# File lib/dotdiff/element_handler.rb, line 24 def script(xpath, visibility) xpath += if visibility == :hidden "[not(contains(@style, 'visibility'))]" else "[contains(@style, 'visibility: hidden')]" end # this is done like so instead of a single pass over all elements due to a bug in Firefox: # https://greasyfork.org/en/forum/discussion/12223/xpath-iteratenext-fails-in-firefox "var elem; while (elem = document.evaluate(\"#{xpath}\", document, "\ 'null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null).iterateNext()) '\ "{ elem.style.visibility = '#{visibility}'; }" end
show()
click to toggle source
# File lib/dotdiff/element_handler.rb, line 18 def show elements.each do |xpath| driver.execute_script(script(xpath, :'')) end end