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 +4 -4
- data/lib/onlyoffice_webdriver_wrapper/helpers/bin/chromedriver +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/bin/chromedriver_mac +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/bin/geckodriver +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper.rb +16 -2
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb +4 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/real_display_tools.rb +1 -0
- data/lib/onlyoffice_webdriver_wrapper/version.rb +1 -1
- data/lib/onlyoffice_webdriver_wrapper/webdriver.rb +11 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_browser_log_helper.rb +1 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb +1 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_style_helper.rb +1 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_tab_helper.rb +1 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_user_agent_helper.rb +1 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fb4a9f6a9a01001b6fd2bcd65984dbe4b7ad3a3dc96e9d123af7799aaaa9e65
|
4
|
+
data.tar.gz: 44b8adf3e335448be9ea08a075ddbfa16e25b542586623ae124ae1c4d0eb315a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e17a6086204cbb60b4e880b6f99ad2cfa95646ee61c108f7fb7b2f34d39b16a7f7fef56c69bc7a5b90b54a779aba5a483f3029f8fd0f0775d0c8bb95a8d4606
|
7
|
+
data.tar.gz: 2baa1fc5b0cb82bbb9e2d6d6ad5051eaa951ba84e374fda07f83e2b37816485edb32cd47976942b0c2dc1531267fe2d66b7cba1f968a3c44d690c7b5e7196262
|
Binary file
|
Binary file
|
Binary file
|
@@ -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
|
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}")
|
@@ -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
|
|
@@ -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
|
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.
|
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-
|
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.
|
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.
|
98
|
+
version: 3.14.1
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: watir
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|