Class: Applitools::ViewportSize
- Inherits:
-
Object
- Object
- Applitools::ViewportSize
- Defined in:
- lib/eyes_selenium_ruby/eyes/viewport_size.rb
Defined Under Namespace
Classes: Dimension
Constant Summary collapse
- GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_NORMAL_BROWSER =
"return window.innerHeight"
- GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_NORMAL_BROWSER =
"return window.innerWidth"
- DOCUMENT_CLEAR_SCROLL_BARS_JAVASCRIPT =
"var doc = document.documentElement;" + "var previousOverflow = doc.style.overflow;"
- DOCUMENT_RESET_SCROLL_BARS_JAVASCRIPT =
"doc.style.overflow = previousOverflow;"
- DOCUMENT_RETURN_JAVASCRIPT =
"return __applitools_result;"
- GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS =
DOCUMENT_CLEAR_SCROLL_BARS_JAVASCRIPT + "var __applitools_result = doc.clientWidth;" + DOCUMENT_RESET_SCROLL_BARS_JAVASCRIPT + DOCUMENT_RETURN_JAVASCRIPT
- GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_BAD_BROWSERS =
DOCUMENT_CLEAR_SCROLL_BARS_JAVASCRIPT + "var __applitools_result = doc.clientHeight;" + DOCUMENT_RESET_SCROLL_BARS_JAVASCRIPT + DOCUMENT_RETURN_JAVASCRIPT
Instance Attribute Summary collapse
-
#dimension ⇒ Object
Returns the value of attribute dimension.
-
#driver ⇒ Object
readonly
Returns the value of attribute driver.
Instance Method Summary collapse
- #browser_size ⇒ Object
- #browser_size=(other) ⇒ Object
- #extract_viewport_from_browser ⇒ Object (also: #viewport_size)
- #extract_viewport_from_browser! ⇒ Object
- #extract_viewport_height ⇒ Object
- #extract_viewport_width ⇒ Object
-
#initialize(driver, dimension = nil) ⇒ ViewportSize
constructor
A new instance of ViewportSize.
- #set ⇒ Object
- #to_hash ⇒ Object
- #verify_size(to_verify, sleep_time = 1, retries = 3) ⇒ Object
Constructor Details
#initialize(driver, dimension = nil) ⇒ ViewportSize
Returns a new instance of ViewportSize.
30 31 32 33 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 30 def initialize(driver, dimension=nil) @driver = driver @dimension = dimension end |
Instance Attribute Details
#dimension ⇒ Object
Returns the value of attribute dimension.
29 30 31 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 29 def dimension @dimension end |
#driver ⇒ Object (readonly)
Returns the value of attribute driver.
28 29 30 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 28 def driver @driver end |
Instance Method Details
#browser_size ⇒ Object
99 100 101 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 99 def browser_size driver.manage.window.size end |
#browser_size=(other) ⇒ Object
103 104 105 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 103 def browser_size=(other) self.driver.manage.window.size = other end |
#extract_viewport_from_browser ⇒ Object Also known as: viewport_size
59 60 61 62 63 64 65 66 67 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 59 def width = height = Dimension.new(width,height) rescue => e EyesLogger.info "getViewportSize(): only window size is available (#{e.})" width, height = *browser_size.values Dimension.new(width,height) end |
#extract_viewport_from_browser! ⇒ Object
55 56 57 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 55 def self.dimension = end |
#extract_viewport_height ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 45 def begin return driver.execute_script(GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_NORMAL_BROWSER) rescue => e EyesLogger.info "getViewportSize(): Browser does not support innerHeight (#{e.})" end driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS) end |
#extract_viewport_width ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 35 def begin return driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_NORMAL_BROWSER) rescue => e EyesLogger.info "getViewportSize(): Browser does not support innerWidth (#{e.})" end driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS) end |
#set ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 70 def set if dimension.is_a?(Hash) && dimension.has_key?(:width) && dimension.has_key?(:height) # If dimension is hash of width/height, we convert it to a struct with width/height properties. self.dimension = Struct.new(:width, :height).new(dimension[:width], dimension[:height]) elsif !dimension.respond_to?(:width) || !dimension.respond_to?(:height) raise ArgumentError, "expected #{dimension.inspect}:#{dimension.class}" + " to respond to #width and #height, or be a hash with these keys" end self.browser_size = dimension verify_size(:browser_size) = self.browser_size = Dimension.new( (2 * browser_size.width) - .width, (2 * browser_size.height) - .height ) verify_size(:viewport_size) end |
#to_hash ⇒ Object
107 108 109 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 107 def to_hash Hash[dimension.each_pair.to_a] end |
#verify_size(to_verify, sleep_time = 1, retries = 3) ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/eyes_selenium_ruby/eyes/viewport_size.rb', line 88 def verify_size(to_verify, sleep_time=1, retries=3) retries.times do sleep(sleep_time) cur_size = send(to_verify) return if cur_size.values == dimension.values end EyesLogger.info(err_msg = "Failed setting #{to_verify} to #{required_dimensions.values}") raise Applitools::TestFailedError.new(err_msg) end |