Module: OnlyofficeWebdriverWrapper::WebdriverJsMethods

Included in:
WebDriver
Defined in:
lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb

Overview

Methods for webdriver for calling Javascript

Instance Method Summary collapse

Instance Method Details

#computed_style(xpath, pseudo_element = 'null', property = nil) ⇒ String

Get ComputedStyle property value

Parameters:

  • xpath (String) —

    xpath of element

  • pseudo_element (String) (defaults to: 'null') —

    pseudo element to compute

  • property (String) (defaults to: nil) —

    property to get

Returns:

  • (String) —

    value of property



69
70
71
72
73
74
75
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 69

def computed_style(xpath, pseudo_element = 'null', property = nil)
  element_by_xpath = "document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()"
  style = "window.getComputedStyle(#{element_by_xpath}, '#{pseudo_element}')"
  full_command = "#{style}.getPropertyValue('#{property}')"
  result = execute_javascript("return #{full_command}")
  result.delete('"')
end

#document_ready? ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 60

def document_ready?
  execute_javascript('return document.readyState;') == 'complete'
end

#element_size_by_js(xpath) ⇒ Dimensions

Calculate object size using Javascript

Parameters:

  • xpath (Sting) —

    xpath of object

Returns:



31
32
33
34
35
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 31

def element_size_by_js(xpath)
  width = execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().offsetWidth")
  height = execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().offsetHeight")
  Dimensions.new(width, height)
end

#execute_javascript(script) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 6

def execute_javascript(script)
  result = @driver.execute_script(script)
  OnlyofficeLoggerHelper.log("Executed js: `#{script}` with result: `#{result}`")
  result
rescue Exception => e
  webdriver_error("Exception #{e} in execute_javascript: #{script}")
end

#get_text_by_js(xpath) ⇒ Object



24
25
26
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 24

def get_text_by_js(xpath)
  execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().textContent")
end

#jquery_finished? ⇒ Boolean

Checks for jQuery finished its job or not present

Returns:

  • (Boolean)


54
55
56
57
58
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 54

def jquery_finished?
  return true unless jquery_loaded?

  execute_javascript('return window.jQuery.active;').zero?
end

#jquery_loaded? ⇒ True, False

Returns is page have jquery loaded.

Returns:

  • (True, False) —

    is page have jquery loaded



47
48
49
50
51
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 47

def jquery_loaded?
  loaded = execute_javascript('return !!window.jQuery')
  OnlyofficeLoggerHelper.log("jquery_loaded? # #{loaded}")
  loaded
end

#jquery_selector_by_xpath(xpath) ⇒ String

Returns string to select by xpath.

Returns:

  • (String) —

    string to select by xpath



15
16
17
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 15

def jquery_selector_by_xpath(xpath)
  "$(document.evaluate('#{xpath}', document, null, XPathResult.ANY_TYPE, null).iterateNext())"
end

#object_absolute_position(xpath) ⇒ CursorPoint

Get object absolute postion from top left edge of screen

Parameters:

  • xpath (Sting) —

    xpath of object

Returns:

  • (CursorPoint) —

    position of element



40
41
42
43
44
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 40

def object_absolute_position(xpath)
  left = execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().getBoundingClientRect().left")
  top = execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().getBoundingClientRect().top")
  Dimensions.new(left, top)
end

#type_to_locator_by_javascript(xpath_name, text) ⇒ Object



19
20
21
22
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 19

def type_to_locator_by_javascript(xpath_name, text)
  escaped_text = text.gsub('\\', '\\\\\\\\').gsub('"', '\\"').gsub("\n", '\\n')
  execute_javascript("document.evaluate('#{xpath_name}', document, null, XPathResult.ANY_TYPE, null).iterateNext().value=\"#{escaped_text}\";")
end