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 +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
|