onlyoffice_webdriver_wrapper 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f5c77f8a1e5352b76bd894aa9039fe4e3094ba5f9c66818e5ea5ba556fff4c8f
4
- data.tar.gz: 935c4aaa607da023aa5cd59e5335c84d7cbc87becd1afc12252b1faecdd58e8b
3
+ metadata.gz: 6fb4a9f6a9a01001b6fd2bcd65984dbe4b7ad3a3dc96e9d123af7799aaaa9e65
4
+ data.tar.gz: 44b8adf3e335448be9ea08a075ddbfa16e25b542586623ae124ae1c4d0eb315a
5
5
  SHA512:
6
- metadata.gz: 2abcee5172ae2629bfea3610dc88d767db299a609d6de8c3c37ce05461ee78c10679f6af5be453799658ab2898999bdbe1845dc79a07e2607b7c7e845a582855
7
- data.tar.gz: 4952374aa06647c64e94a7ade41e107f636cd40ab2144017118d44861bc7652b2af6ba392026fe591ddb9622d7da1bb47d1d2f889913cbf3d5aaa97e2d56ec0d
6
+ metadata.gz: 6e17a6086204cbb60b4e880b6f99ad2cfa95646ee61c108f7fb7b2f34d39b16a7f7fef56c69bc7a5b90b54a779aba5a483f3029f8fd0f0775d0c8bb95a8d4606
7
+ data.tar.gz: 2baa1fc5b0cb82bbb9e2d6d6ad5051eaa951ba84e374fda07f83e2b37816485edb32cd47976942b0c2dc1531267fe2d66b7cba1f968a3c44d690c7b5e7196262
@@ -2,7 +2,6 @@ module OnlyofficeWebdriverWrapper
2
2
  # Class for working with Chrome
3
3
  module ChromeHelper
4
4
  DEFAULT_CHROME_SWITCHES = %w[--kiosk-printing
5
- --start-maximized
6
5
  --disable-popup-blocking
7
6
  --disable-infobars
8
7
  --no-sandbox
@@ -48,7 +47,7 @@ module OnlyofficeWebdriverWrapper
48
47
  sleep 10
49
48
  driver = Selenium::WebDriver.for :chrome, webdriver_options
50
49
  end
51
- driver.manage.window.size = Selenium::WebDriver::Dimension.new(headless.resolution_x, headless.resolution_y) if headless.running?
50
+ maximize_chrome(driver)
52
51
  driver
53
52
  else
54
53
  caps['chromeOptions'] = {
@@ -58,5 +57,20 @@ module OnlyofficeWebdriverWrapper
58
57
  Selenium::WebDriver.for(:remote, url: 'http://' + remote_server + ':4444/wd/hub', desired_capabilities: caps)
59
58
  end
60
59
  end
60
+
61
+ private
62
+
63
+ # Maximize chrome
64
+ # @param driver [Selenium::WebDriver] driver to use
65
+ # @return [Void]
66
+ def maximize_chrome(driver)
67
+ if headless.running?
68
+ # Cannot use `driver.manage.window.maximize` in xvfb session
69
+ # according to https://bugs.chromium.org/p/chromedriver/issues/detail?id=1901#c16
70
+ driver.manage.window.size = Selenium::WebDriver::Dimension.new(headless.resolution_x, headless.resolution_y)
71
+ else
72
+ driver.manage.window.maximize
73
+ end
74
+ end
61
75
  end
62
76
  end
@@ -21,6 +21,7 @@ module OnlyofficeWebdriverWrapper
21
21
  def should_start?
22
22
  return false if debug?
23
23
  return false if OSHelper.mac?
24
+
24
25
  true
25
26
  end
26
27
 
@@ -31,6 +32,7 @@ module OnlyofficeWebdriverWrapper
31
32
  true
32
33
  end
33
34
  return unless create_session
35
+
34
36
  OnlyofficeLoggerHelper.log('Starting Headless Session')
35
37
  begin
36
38
  @headless_instance = Headless.new(reuse: false,
@@ -48,6 +50,7 @@ module OnlyofficeWebdriverWrapper
48
50
 
49
51
  def stop
50
52
  return unless running?
53
+
51
54
  OnlyofficeLoggerHelper.log('Stopping Headless Session')
52
55
  headless_instance.destroy
53
56
  end
@@ -58,6 +61,7 @@ module OnlyofficeWebdriverWrapper
58
61
 
59
62
  def take_screenshot(scr_path = '/tmp/screenshot.png')
60
63
  return unless running?
64
+
61
65
  headless_instance.take_screenshot(scr_path)
62
66
  OnlyofficeLoggerHelper.log("Took Screenshot to file: #{scr_path}")
63
67
  end
@@ -13,6 +13,7 @@ module OnlyofficeWebdriverWrapper
13
13
 
14
14
  def real_display_connected?
15
15
  return true if OSHelper.mac?
16
+
16
17
  result = xrandr_result
17
18
  exists = result.include?(' connected') && !result.include?('Failed')
18
19
  OnlyofficeLoggerHelper.log("Real Display Exists: #{exists}")
@@ -1,5 +1,5 @@
1
1
  module OnlyofficeWebdriverWrapper
2
2
  module Version
3
- STRING = '0.0.1'.freeze
3
+ STRING = '0.0.2'.freeze
4
4
  end
5
5
  end
@@ -57,6 +57,7 @@ module OnlyofficeWebdriverWrapper
57
57
  device: :desktop_linux,
58
58
  proxy: nil)
59
59
  raise WebdriverSystemNotSupported, 'Your OS is not 64 bit. It is not supported' unless os_64_bit?
60
+
60
61
  @device = device
61
62
  @headless = HeadlessHelper.new
62
63
  @headless.start
@@ -110,6 +111,7 @@ module OnlyofficeWebdriverWrapper
110
111
 
111
112
  def get_element(object_identification)
112
113
  return object_identification unless object_identification.is_a?(String)
114
+
113
115
  @driver.find_element(:xpath, object_identification)
114
116
  rescue StandardError
115
117
  nil
@@ -141,6 +143,7 @@ module OnlyofficeWebdriverWrapper
141
143
  def select_from_list(xpath_value, value)
142
144
  @driver.find_element(:xpath, xpath_value).find_elements(tag_name: 'li').each do |element|
143
145
  next unless element.text == value.to_s
146
+
144
147
  element.click
145
148
  return true
146
149
  end
@@ -268,6 +271,7 @@ module OnlyofficeWebdriverWrapper
268
271
  def click_on_locator(xpath_name, by_javascript = false, count: 1)
269
272
  element = get_element(xpath_name)
270
273
  return webdriver_error("Element with xpath: #{xpath_name} not found") if element.nil?
274
+
271
275
  if by_javascript
272
276
  execute_javascript("document.evaluate(\"#{xpath_name}\", document, null, XPathResult.ANY_TYPE, null).iterateNext().click();")
273
277
  else
@@ -353,6 +357,7 @@ module OnlyofficeWebdriverWrapper
353
357
  def click_on_one_of_several_by_text(xpath_several_elements, text_to_click)
354
358
  @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
355
359
  next unless text_to_click.to_s == current_element.attribute('innerHTML')
360
+
356
361
  begin
357
362
  current_element.click
358
363
  rescue Exception => e
@@ -489,8 +494,10 @@ module OnlyofficeWebdriverWrapper
489
494
  result = []
490
495
  some_element = get_element(xpath_for_some)
491
496
  return result if some_element.nil?
497
+
492
498
  elements.each do |current|
493
499
  break if current == some_element
500
+
494
501
  result << current
495
502
  end
496
503
  result
@@ -500,6 +507,7 @@ module OnlyofficeWebdriverWrapper
500
507
  elements = get_elements(xpath_several_elements)
501
508
  some_element = get_element(xpath_for_some)
502
509
  return elements if some_element.nil?
510
+
503
511
  elements.each do |current|
504
512
  elements.delete(current)
505
513
  break if current == some_element
@@ -526,6 +534,7 @@ module OnlyofficeWebdriverWrapper
526
534
 
527
535
  def get_elements(objects_identification, only_visible = true)
528
536
  return objects_identification if objects_identification.is_a?(Array)
537
+
529
538
  elements = @driver.find_elements(:xpath, objects_identification)
530
539
  if only_visible
531
540
  elements.each do |current|
@@ -541,6 +550,7 @@ module OnlyofficeWebdriverWrapper
541
550
  elsif element_present?(xpath_name)
542
551
  element = get_element(xpath_name)
543
552
  return false if element.nil?
553
+
544
554
  begin
545
555
  visible = element.displayed?
546
556
  rescue Exception
@@ -560,6 +570,7 @@ module OnlyofficeWebdriverWrapper
560
570
  time += 1
561
571
  end
562
572
  return unless time >= timeout
573
+
563
574
  webdriver_error("Element #{xpath_name} not visible for #{timeout} seconds")
564
575
  end
565
576
 
@@ -3,6 +3,7 @@ module OnlyofficeWebdriverWrapper
3
3
  module WebdriverBrowserLogHelper
4
4
  def browser_logs
5
5
  return [] if browser == :firefox # not implemented, see https://github.com/mozilla/geckodriver/issues/284
6
+
6
7
  @driver.manage.logs.get(:browser)
7
8
  end
8
9
  end
@@ -46,6 +46,7 @@ module OnlyofficeWebdriverWrapper
46
46
  # Checks for jQuery finished its job or not present
47
47
  def jquery_finished?
48
48
  return true unless jquery_loaded?
49
+
49
50
  execute_javascript('return window.jQuery.active;').zero?
50
51
  end
51
52
 
@@ -32,6 +32,7 @@ module OnlyofficeWebdriverWrapper
32
32
  execute_javascript('document.evaluate( \'' + xpath.to_s +
33
33
  '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.display = "block";')
34
34
  return unless move_to_center
35
+
35
36
  execute_javascript('document.evaluate( \'' + xpath.to_s +
36
37
  '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.left = "410px";')
37
38
  execute_javascript('document.evaluate( \'' + xpath.to_s +
@@ -27,6 +27,7 @@ module OnlyofficeWebdriverWrapper
27
27
  list_of_handlers = @driver.window_handles
28
28
  last_window_handler = list_of_handlers.last
29
29
  @driver.switch_to.window(last_window_handler)
30
+ sleep 1 # Do not remove until problem with page loading stop resolved
30
31
  end
31
32
 
32
33
  # Get tab count
@@ -29,6 +29,7 @@ module OnlyofficeWebdriverWrapper
29
29
  def add_useragent_to_switches(switches)
30
30
  user_agent = user_agent_for_device
31
31
  return switches.dup if user_agent.nil?
32
+
32
33
  switches.dup << "--user-agent=#{user_agent}"
33
34
  end
34
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlyoffice_webdriver_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Lobashov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-09-28 00:00:00.000000000 Z
13
+ date: 2018-11-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: headless
@@ -88,14 +88,14 @@ dependencies:
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 3.14.0
91
+ version: 3.14.1
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '='
97
97
  - !ruby/object:Gem::Version
98
- version: 3.14.0
98
+ version: 3.14.1
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: watir
101
101
  requirement: !ruby/object:Gem::Requirement