onlyoffice_webdriver_wrapper 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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