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
-
#computed_style(xpath, pseudo_element = 'null', property = nil) ⇒ String
Get ComputedStyle property value.
- #document_ready? ⇒ Boolean
-
#element_size_by_js(xpath) ⇒ Dimensions
Calculate object size using Javascript.
- #execute_javascript(script) ⇒ Object
- #get_text_by_js(xpath) ⇒ Object
-
#jquery_finished? ⇒ Boolean
Checks for jQuery finished its job or not present.
-
#jquery_loaded? ⇒ True, False
Is page have jquery loaded.
-
#jquery_selector_by_xpath(xpath) ⇒ String
String to select by xpath.
-
#object_absolute_position(xpath) ⇒ CursorPoint
Get object absolute postion from top left edge of screen.
- #type_to_locator_by_javascript(xpath_name, text) ⇒ Object
Instance Method Details
#computed_style(xpath, pseudo_element = 'null', property = nil) ⇒ String
Get ComputedStyle property value
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
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
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
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.
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.
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
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 |