eyes_selenium 2.2.0 → 2.3.0
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/.gitignore +1 -1
- data/lib/eyes_selenium/eyes/driver.rb +54 -5
- data/lib/eyes_selenium/version.rb +1 -1
- data/spec/find_spec.rb +53 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 895307ec918bff0502fa49b951d2cbee119042fd
|
4
|
+
data.tar.gz: 6c7cc9590dd8e500c932666c4503e1b8cc4412d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5153a65ae4f19faa5c26489b82aa6e37cde45c3d3015f83951bfaa646dc92e777509a555b090c6d04085dbb16372096dcef980067b5743f0d77027c366395869
|
7
|
+
data.tar.gz: 167494187f8870bbc825a20cd1efb386c37fe0392d09941c6be645ead06a677c83d6148ef5469aefb5fe21edd98d9135d927195b107cdd7dc5bc046cf05205d2
|
data/.gitignore
CHANGED
@@ -55,12 +55,38 @@ class Applitools::Driver
|
|
55
55
|
Applitools::EyesKeyboard.new(self, driver.keyboard)
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
58
|
+
FINDERS = {
|
59
|
+
:class => 'class name',
|
60
|
+
:class_name => 'class name',
|
61
|
+
:css => 'css selector',
|
62
|
+
:id => 'id',
|
63
|
+
:link => 'link text',
|
64
|
+
:link_text => 'link text',
|
65
|
+
:name => 'name',
|
66
|
+
:partial_link_text => 'partial link text',
|
67
|
+
:tag_name => 'tag name',
|
68
|
+
:xpath => 'xpath',
|
69
|
+
}
|
70
|
+
|
71
|
+
def find_element(*args)
|
72
|
+
how, what = extract_args(args)
|
73
|
+
|
74
|
+
# Make sure that "how" is a valid locator.
|
75
|
+
unless FINDERS[how.to_sym]
|
76
|
+
raise ArgumentError, "cannot find element by #{how.inspect}"
|
77
|
+
end
|
78
|
+
|
79
|
+
Applitools::Element.new(self, driver.find_element(how, what))
|
60
80
|
end
|
61
81
|
|
62
|
-
def find_elements(
|
63
|
-
|
82
|
+
def find_elements(*args)
|
83
|
+
how, what = extract_args(args)
|
84
|
+
|
85
|
+
unless FINDERS[how.to_sym]
|
86
|
+
raise ArgumentError, "cannot find element by #{how.inspect}"
|
87
|
+
end
|
88
|
+
|
89
|
+
driver.find_elements(how, what).map { |el| Applitools::Element.new(self, el) }
|
64
90
|
end
|
65
91
|
|
66
92
|
def ie?
|
@@ -99,7 +125,7 @@ class Applitools::Driver
|
|
99
125
|
|
100
126
|
def get_local_ip
|
101
127
|
begin
|
102
|
-
Socket.ip_address_list.detect do |intf|
|
128
|
+
Socket.ip_address_list.detect do |intf|
|
103
129
|
intf.ipv4? and !intf.ipv4_loopback? and !intf.ipv4_multicast?
|
104
130
|
end.ip_address
|
105
131
|
rescue SocketError => e
|
@@ -107,6 +133,29 @@ class Applitools::Driver
|
|
107
133
|
end
|
108
134
|
end
|
109
135
|
|
136
|
+
def extract_args(args)
|
137
|
+
case args.size
|
138
|
+
when 2
|
139
|
+
args
|
140
|
+
when 1
|
141
|
+
arg = args.first
|
142
|
+
|
143
|
+
unless arg.respond_to?(:shift)
|
144
|
+
raise ArgumentError, "expected #{arg.inspect}:#{arg.class} to respond to #shift"
|
145
|
+
end
|
146
|
+
|
147
|
+
# this will be a single-entry hash, so use #shift over #first or #[]
|
148
|
+
arr = arg.dup.shift
|
149
|
+
unless arr.size == 2
|
150
|
+
raise ArgumentError, "expected #{arr.inspect} to have 2 elements"
|
151
|
+
end
|
152
|
+
|
153
|
+
arr
|
154
|
+
else
|
155
|
+
raise ArgumentError, "wrong number of arguments (#{args.size} for 2)"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
110
159
|
end
|
111
160
|
|
112
161
|
## .bridge, .session_id and .server_url are private methods in Selenium::WebDriver gem
|
data/spec/find_spec.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'eyes_selenium'
|
2
|
+
|
3
|
+
describe 'find_element(s)' do
|
4
|
+
|
5
|
+
before(:each) do |example|
|
6
|
+
@eyes = Applitools::Eyes.new
|
7
|
+
@eyes.api_key = ENV['APPLITOOLS_ACCESS_KEY']
|
8
|
+
driver = Selenium::WebDriver.for :firefox
|
9
|
+
@driver = @eyes.open(app_name: 'the-internet', test_name: example.metadata[:full_description],
|
10
|
+
viewport_size: {width: 800, height: 600}, driver: driver)
|
11
|
+
@driver.get 'http://the-internet.herokuapp.com'
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:each) do
|
15
|
+
@eyes.close
|
16
|
+
@driver.quit
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'single element' do
|
20
|
+
|
21
|
+
it 'explicit' do
|
22
|
+
link = @driver.find_element(:css, 'a')
|
23
|
+
expect(link).to_not be nil
|
24
|
+
expect(link).to be_a Applitools::Element
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'by hash' do
|
28
|
+
link = @driver.find_element(css: 'a')
|
29
|
+
expect(link).to_not be nil
|
30
|
+
expect(link).to be_a Applitools::Element
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'all elements' do
|
36
|
+
|
37
|
+
it 'explicit' do
|
38
|
+
collection = @driver.find_elements(css: 'a')
|
39
|
+
expect(collection).to_not be nil
|
40
|
+
expect(collection[0]).to be_a Applitools::Element
|
41
|
+
expect(collection[1]).to be_a Applitools::Element
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'by hash' do
|
45
|
+
collection = @driver.find_elements(css: 'a')
|
46
|
+
expect(collection).to_not be nil
|
47
|
+
expect(collection[0]).to be_a Applitools::Element
|
48
|
+
expect(collection[1]).to be_a Applitools::Element
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eyes_selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Applitools team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- lib/eyes_selenium/utils.rb
|
166
166
|
- lib/eyes_selenium/utils/image_delta_compressor.rb
|
167
167
|
- lib/eyes_selenium/version.rb
|
168
|
+
- spec/find_spec.rb
|
168
169
|
- test_script.rb
|
169
170
|
homepage: http://www.applitools.com
|
170
171
|
licenses:
|
@@ -190,4 +191,5 @@ rubygems_version: 2.4.1
|
|
190
191
|
signing_key:
|
191
192
|
specification_version: 4
|
192
193
|
summary: Applitools Ruby SDK
|
193
|
-
test_files:
|
194
|
+
test_files:
|
195
|
+
- spec/find_spec.rb
|