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

#document_ready?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 53

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:



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

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



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

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



17
18
19
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 17

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)


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

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



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

def jquery_loaded?
  loaded = execute_javascript('return !!window.jQuery')
  OnlyofficeLoggerHelper.log("jquery_loaded? # #{loaded}")
  loaded
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



33
34
35
36
37
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 33

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



12
13
14
15
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb', line 12

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