browza 0.0.2.beta2 → 0.0.3
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/README.md +102 -0
- data/browza.gemspec +5 -4
- data/examples/ex1.rb +25 -0
- data/examples/ex2.rb +23 -0
- data/examples/parms.rb +45 -0
- data/lib/browza/base/browza_mgr.rb +110 -0
- data/lib/browza/base/manager.rb +745 -148
- data/lib/browza/version.rb +1 -1
- data/lib/browza.rb +1 -1
- metadata +32 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9be45cff4eee8f679be47ac85f127f5031ed9338
|
4
|
+
data.tar.gz: 8d1f2adb8fdf39e2050bd909f8f6b56dec29981f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee4d7640add30d9f0f067e0b841c0d6c488d4b740bf431f4facf2208e4f8a91fe341d82a7004fc3628297e67817b1dcef7de45b203a8e5bdad6b22ef3f5fc554
|
7
|
+
data.tar.gz: 225b1e0fc62b853f1e345fc63c568622e9f9636f0fbb8b797b95f705b2172d2764b772266577d87a01001d591e614842fd4eb50929d3c8f8f3afb649edc840e4
|
data/README.md
CHANGED
@@ -1,2 +1,104 @@
|
|
1
1
|
|
2
2
|
# Browza
|
3
|
+
|
4
|
+
## Description
|
5
|
+
|
6
|
+
Very simple, yet reliable, Selenium-Webdriver3, command module. Simple set of commands to automate your browser
|
7
|
+
without having to code.
|
8
|
+
|
9
|
+
Browza also supports and easily integrates with Ruby Gem *appmodel* which supports modeling (e.g. simplify pageObjects).
|
10
|
+
|
11
|
+
## APIs
|
12
|
+
|
13
|
+
### click(<locator>)
|
14
|
+
|
15
|
+
### Browser Creation
|
16
|
+
1. createBrowser
|
17
|
+
* createBrowser(:chrome)
|
18
|
+
* createBrowser(:firefox)
|
19
|
+
1. start()
|
20
|
+
* Run locally
|
21
|
+
1. SELENIUM_RUN=local
|
22
|
+
1. SELENIUM_PLATFORM=local
|
23
|
+
1. SELENIUM_BROWSER=[ chrome | firefox | ie | edge ]
|
24
|
+
1. SELENIUM_RESOLUTION=[widthxheight]
|
25
|
+
* 1024x768
|
26
|
+
* Run on SauceLabs
|
27
|
+
1. SELENIUM_PLATFORM=[ Windows 8.1 | Windows 10 | linux | osx* ]
|
28
|
+
1. SELENIUM_BROWSER=[ chrome | firefox | ie | edge ]
|
29
|
+
1. SELENIUM_VERSION=[ version of browser ]
|
30
|
+
* 11.0 (for IE)
|
31
|
+
* 57.0 (for Chrome)
|
32
|
+
* 52.0 (for Chrome/Firefox)
|
33
|
+
* etc
|
34
|
+
1. SELENIUM_RESOLUTION=[widthxheight]
|
35
|
+
|
36
|
+
|
37
|
+
### displayed?(<locator>)
|
38
|
+
|
39
|
+
Returns true if the locator is displayed (visible).
|
40
|
+
|
41
|
+
### focusedText
|
42
|
+
|
43
|
+
Returns the text of the currently focused element.
|
44
|
+
|
45
|
+
### focusedValue
|
46
|
+
|
47
|
+
Returns the value of the currently focused element.
|
48
|
+
|
49
|
+
### highlight(<locator>)
|
50
|
+
|
51
|
+
Highlight the provided locator.
|
52
|
+
|
53
|
+
### hover(<locator>)
|
54
|
+
|
55
|
+
Mouseover the provided locator.
|
56
|
+
|
57
|
+
### isFocused(<locator>)
|
58
|
+
|
59
|
+
Returns true if the currently focused element matches the locator.
|
60
|
+
|
61
|
+
### navigate
|
62
|
+
|
63
|
+
### press(<key>)
|
64
|
+
|
65
|
+
Press the keyboard key.
|
66
|
+
|
67
|
+
|
68
|
+
### setTimeout
|
69
|
+
|
70
|
+
Sets the default explicit default timeout (30 sec.)
|
71
|
+
|
72
|
+
### addModel(<path to model file>)
|
73
|
+
|
74
|
+
Add a model specified by a file (e.g. JSON). The model is a superset of a page object.
|
75
|
+
|
76
|
+
### setDimension(width, height)
|
77
|
+
|
78
|
+
Set/resize browser viewport.
|
79
|
+
|
80
|
+
### maximize
|
81
|
+
|
82
|
+
Maximize the browser.
|
83
|
+
|
84
|
+
### quit
|
85
|
+
|
86
|
+
Quit browser (quit & close)
|
87
|
+
|
88
|
+
### title
|
89
|
+
|
90
|
+
Get the title from the currently loaded page.
|
91
|
+
|
92
|
+
### isChrome?
|
93
|
+
|
94
|
+
Returns true, if the browser under test is Chrome.
|
95
|
+
|
96
|
+
|
97
|
+
### isTitle?(<regex>)
|
98
|
+
|
99
|
+
Returns a boolean - based on whether the current title matches the provided regEx.
|
100
|
+
|
101
|
+
### selected?(<locator>)
|
102
|
+
Returns true, if the locator is 'selected' (e.g. radio/checkbox button)
|
103
|
+
|
104
|
+
### type(<locator>, <text>)
|
data/browza.gemspec
CHANGED
@@ -19,10 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_development_dependency "bundler", "~> 1.
|
23
|
-
spec.add_development_dependency "rake", "~>
|
24
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.14.6"
|
23
|
+
spec.add_development_dependency "rake", "~> 12.0.0"
|
24
|
+
spec.add_development_dependency "rspec", "~> 3.5.0"
|
25
25
|
spec.add_development_dependency "appmodel", "~> 0.1.2"
|
26
|
-
spec.add_development_dependency "selenium-webdriver"
|
26
|
+
spec.add_development_dependency "selenium-webdriver", "~> 3.4.0"
|
27
27
|
spec.add_development_dependency "logging", "~> 2.2"
|
28
|
+
spec.add_development_dependency "sauce_whisk", "~> 0.1.0"
|
28
29
|
end
|
data/examples/ex1.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require_relative '../lib/browza'
|
5
|
+
|
6
|
+
|
7
|
+
puts "Creating Chrome Browser!"
|
8
|
+
|
9
|
+
|
10
|
+
ENV['SELENIUM_BROWSER']='firefox'
|
11
|
+
Browza::Manager.instance.createBrowser()
|
12
|
+
|
13
|
+
|
14
|
+
puts "Navigate to playground"
|
15
|
+
Browza::Manager.instance.navigate('https://stark-bastion-95510.herokuapp.com/playground')
|
16
|
+
|
17
|
+
Browza::Manager.instance.click("//button[text()='Van Halen']")
|
18
|
+
|
19
|
+
Browza::Manager.instance.highlight("//button[text()='Van Halen']", 'red')
|
20
|
+
|
21
|
+
|
22
|
+
puts "PRESS ENTER to Continue .."
|
23
|
+
STDIN.gets
|
24
|
+
|
25
|
+
Browza::Manager.instance.quit()
|
data/examples/ex2.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require_relative '../lib/browza'
|
5
|
+
|
6
|
+
|
7
|
+
puts "Creating Chrome Browser!"
|
8
|
+
|
9
|
+
|
10
|
+
Browza::Manager.instance.createBrowser(:chrome)
|
11
|
+
Browza::Manager.instance.createBrowser(:chrome)
|
12
|
+
|
13
|
+
|
14
|
+
puts "Navigate to playground"
|
15
|
+
Browza::Manager.instance.navigate('https://stark-bastion-95510.herokuapp.com/playground')
|
16
|
+
|
17
|
+
Browza::Manager.instance.click("//button[text()='Van Halen']")
|
18
|
+
|
19
|
+
Browza::Manager.instance.highlight("//button[text()='Van Halen']", 'red')
|
20
|
+
|
21
|
+
|
22
|
+
puts "PRESS ENTER to Continue .."
|
23
|
+
STDIN.gets
|
data/examples/parms.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
def press(k, n=1)
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
def pressIt(*p)
|
9
|
+
|
10
|
+
puts "[pressIt]: length: #{p.length} p => #{p} 0:#{p[0]} 1:#{p[1]}"
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def foo(*p)
|
15
|
+
|
16
|
+
|
17
|
+
puts __FILE__ + (__LINE__).to_s + p.class.to_s
|
18
|
+
|
19
|
+
if p.is_a?(Array)
|
20
|
+
|
21
|
+
puts __FILE__ + (__LINE__).to_s + " SZ : #{p.size.to_s}"
|
22
|
+
i=0
|
23
|
+
p.each do |elt|
|
24
|
+
puts " #{i}. #{elt.class} : #{elt.to_s}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
puts "START"
|
33
|
+
|
34
|
+
foo(:chrome)
|
35
|
+
|
36
|
+
foo( 100 )
|
37
|
+
|
38
|
+
foo( {:name => 'Peter'}, {:age => 'ThritySix'})
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
pressIt('one')
|
43
|
+
|
44
|
+
|
45
|
+
pressIt('page(one)', 'tab')
|
@@ -0,0 +1,110 @@
|
|
1
|
+
|
2
|
+
require 'logging'
|
3
|
+
|
4
|
+
module Browza
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
class BrowzaMgr
|
9
|
+
attr_accessor :driverList
|
10
|
+
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@logger = Logging.logger(STDOUT)
|
14
|
+
@logger.level = :debug
|
15
|
+
@driverList = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def clear
|
19
|
+
@driverList=[]
|
20
|
+
end
|
21
|
+
|
22
|
+
def getBrowsers()
|
23
|
+
@driverList
|
24
|
+
end
|
25
|
+
|
26
|
+
def add(device)
|
27
|
+
|
28
|
+
if !device.is_a?(Hash)
|
29
|
+
@driverList << { :is_sauce => false, :drv => device }
|
30
|
+
else
|
31
|
+
@driverList << device
|
32
|
+
end
|
33
|
+
|
34
|
+
@driverList.last
|
35
|
+
end
|
36
|
+
|
37
|
+
def set(id, prop, val)
|
38
|
+
get(id)[prop] = val
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def get(id)
|
43
|
+
@driverList.each do |elt|
|
44
|
+
if elt.has_key?(:id) && elt[:id] == id
|
45
|
+
return elt
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
|
52
|
+
def getDriver(id=nil)
|
53
|
+
|
54
|
+
if id.nil? && @driverList.length > 0
|
55
|
+
return @driverList.first
|
56
|
+
elsif @driverList.length > 0
|
57
|
+
@driverList.each do |b|
|
58
|
+
if b.has_key?(:id) && b[:id] == id
|
59
|
+
return b[:drv]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
def setSauceStatus(id, status)
|
69
|
+
@driverList.each do |b|
|
70
|
+
if b.has_key?(:id) && b[:id]==id
|
71
|
+
b[:status] = status
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
# Set innerWidth and innerHeight
|
78
|
+
def setDimension(width = 1035, height = 768)
|
79
|
+
|
80
|
+
begin
|
81
|
+
@driverList.each do |b|
|
82
|
+
target_size = Selenium::WebDriver::Dimension.new(width, height)
|
83
|
+
b[:drv].manage.window.size = target_size
|
84
|
+
end
|
85
|
+
rescue => ex
|
86
|
+
@logger.warn __FILE__ + (__LINE__).to_s + " #{ex.class}"
|
87
|
+
@logger.warn "Error during processing: #{$!}"
|
88
|
+
@logger.warn "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def maximize()
|
93
|
+
begin
|
94
|
+
@driverList.each do |b|
|
95
|
+
target_size = Selenium::WebDriver::Dimension.new(width, height)
|
96
|
+
b[:drv].manage.window.maximize
|
97
|
+
end
|
98
|
+
rescue => ex
|
99
|
+
@logger.warn __FILE__ + (__LINE__).to_s + " #{ex.class}"
|
100
|
+
@logger.warn "Error during processing: #{$!}"
|
101
|
+
@logger.warn "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
end
|