webdrone 1.6.2 → 1.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fbf2834fda9d25612ca0f4b0956eed56ff7840f
4
- data.tar.gz: 7de666b447164ff3e7b837d0e32d9378a806115b
3
+ metadata.gz: de07d3e1cc368936c87a52c2ab91499e7665bf0a
4
+ data.tar.gz: 60aef6556d1293c65debedeb7a04c6d69034939b
5
5
  SHA512:
6
- metadata.gz: 10576653f0dec4145d19db447a26da31b96ffdd8251e5c365ff6c59ffb001f7da381b1d4f4811c48a063de404a80a1de7fdb7895daecfdb4be03562a6751ae08
7
- data.tar.gz: 626212233751c8b29d215db9dc17cfba4a95b7d565b561ba30dfb62a8a938272509163007c8915dad68b03b12cdfca344c794d756b111a5f3ff12000e762c480
6
+ metadata.gz: 21f4408f762239675ed1ffc80b09697b1366fcee818a8f0cc5afa4eba566af3bc1a393184c3b97ae31c3dc413105888a3d945394ed4474ea95bb4daccad6d552
7
+ data.tar.gz: 46222e2425d4cb564ccd5d79dddcd69b8065e301119930e659a3731e86d8abc5ea9df4e91b707c25f1a013093c309cf8b459377a0d6d0018685c07ca571aa75d
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.3.1
1
+ ruby-2.4.1
data/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ New features are summarized here.
4
4
 
5
5
 
6
6
 
7
+ ## v.1.7.0 - 2017-08-14
8
+ ### Added
9
+ - Find children elements of a parent element. For ex, given the following HTML:
10
+ ```HTML
11
+ <div id="objects">
12
+ <a>Create</a>
13
+ </div>
14
+ <div id="properties">
15
+ <a>Create</a>
16
+ </div>
17
+ ```
18
+ ```ruby
19
+ objs = a0.find.id 'objects'
20
+ prps = a0.find.id 'properties'
21
+
22
+ # click properties link
23
+ a0.clic.on 'Create', parent: prps
24
+ # click objects link
25
+ a0.clic.on 'Create', parent: objs
26
+ ```
27
+ - parent is supported in the following verbs: `a0.clic.*`, `a0.find.*`, `a0.form.*`, `a0.html.*`, `a0.mark.*`, `a0.text.*` and `a0.vrfy.*`
28
+
7
29
  ## v.1.6.2 - 2017-04-11
8
30
  ### Changed
9
31
  - Changed default preferences for chrome, disabling the password save dialog.
@@ -26,7 +48,7 @@ a0 = Webdrone.create timeout: 10 # setting timeout to 10 seconds
26
48
 
27
49
  # Now
28
50
  a0 = Webdrone.create # default timeout of 30 seconds
29
- a0 = Webdrone.create timeout: 10 # overriding timeout to 10 seconds
51
+ a0 = Webdrone.create timeout: 10 # overriding timeout to 10 seconds
30
52
  ```
31
53
  - Renamed `sleep` to `delay` in `a0.mark`, for example:
32
54
  ```ruby
@@ -47,7 +69,7 @@ a0.mark.on 'something', times: 2, delay: 1
47
69
  ### Fixed
48
70
  - Firefox using geckodriver is not supporting window resizing/positioning :-(. The following error will be ignored in the meantime:
49
71
  ```
50
- Selenium::WebDriver::Error::UnsupportedOperationError: The W3C standard does not currently support setting the Window Position"
72
+ Selenium::WebDriver::Error::UnsupportedOperationError: The W3C standard does not currently support setting the Window Position"
51
73
  ```
52
74
 
53
75
 
@@ -292,5 +314,3 @@ ruby test-script-01.rb
292
314
  - Developer mode: a console appears when an error occurs. The console has the context of your script, so you can debug them easily.
293
315
  - New option `Webdrone.create` `developer: true` to enable developer mode described above (by default is `false`).
294
316
  - Added optional parameters `n:`, `visible:` to all commands in `a0.form`: `set`, `get`, `clic`, `mark` and `submit`.
295
-
296
-
data/lib/webdrone/clic.rb CHANGED
@@ -12,8 +12,8 @@ module Webdrone
12
12
  @a0 = a0
13
13
  end
14
14
 
15
- def clic(text, n: 1, all: false, visible: true, color: '#af1616', times: nil, delay: nil, shot: nil, mark: false)
16
- item = @a0.find.send __callee__, text, n: n, all: all, visible: visible
15
+ def clic(text, n: 1, all: false, visible: true, color: '#af1616', times: nil, delay: nil, shot: nil, mark: false, parent: nil)
16
+ item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, parent: parent
17
17
  if mark
18
18
  @a0.mark.mark_item(item, color: color, times: times, delay: delay, shot: shot, text: text)
19
19
  elsif shot
data/lib/webdrone/find.rb CHANGED
@@ -12,51 +12,51 @@ module Webdrone
12
12
  @a0 = a0
13
13
  end
14
14
 
15
- def id(text, n: 1, all: false, visible: true)
15
+ def id(text, n: 1, all: false, visible: true, parent: nil)
16
16
  @a0.wait.for do
17
- items = @a0.driver.find_elements :id, text
17
+ items = (parent || @a0.driver).find_elements :id, text
18
18
  choose(items, n, all, visible)
19
19
  end
20
20
  rescue => exception
21
21
  Webdrone.report_error(@a0, exception)
22
22
  end
23
23
 
24
- def css(text, n: 1, all: false, visible: true)
24
+ def css(text, n: 1, all: false, visible: true, parent: nil)
25
25
  @a0.wait.for do
26
- items = @a0.driver.find_elements :css, text
26
+ items = (parent || @a0.driver).find_elements :css, text
27
27
  choose(items, n, all, visible)
28
28
  end
29
29
  rescue => exception
30
30
  Webdrone.report_error(@a0, exception)
31
31
  end
32
32
 
33
- def link(text, n: 1, all: false, visible: true)
34
- self.xpath XPath::HTML.link(text).to_s, n: n, all: all, visible: visible
33
+ def link(text, n: 1, all: false, visible: true, parent: nil)
34
+ self.xpath XPath::HTML.link(text).to_s, n: n, all: all, visible: visible, parent: parent
35
35
  rescue => exception
36
36
  Webdrone.report_error(@a0, exception)
37
37
  end
38
38
 
39
- def button(text, n: 1, all: false, visible: true)
40
- self.xpath XPath::HTML.button(text).to_s, n: n, all: all, visible: visible
39
+ def button(text, n: 1, all: false, visible: true, parent: nil)
40
+ self.xpath XPath::HTML.button(text).to_s, n: n, all: all, visible: visible, parent: parent
41
41
  rescue => exception
42
42
  Webdrone.report_error(@a0, exception)
43
43
  end
44
44
 
45
- def on(text, n: 1, all: false, visible: true)
46
- self.xpath XPath::HTML.link_or_button(text).to_s, n: n, all: all, visible: visible
45
+ def on(text, n: 1, all: false, visible: true, parent: nil)
46
+ self.xpath XPath::HTML.link_or_button(text).to_s, n: n, all: all, visible: visible, parent: parent
47
47
  rescue => exception
48
48
  Webdrone.report_error(@a0, exception)
49
49
  end
50
50
 
51
- def option(text, n: 1, all: false, visible: true)
52
- self.xpath XPath::HTML.option(text).to_s, n: n, all: all, visible: visible
51
+ def option(text, n: 1, all: false, visible: true, parent: nil)
52
+ self.xpath XPath::HTML.option(text).to_s, n: n, all: all, visible: visible, parent: parent
53
53
  rescue => exception
54
54
  Webdrone.report_error(@a0, exception)
55
55
  end
56
56
 
57
- def xpath(text, n: 1, all: false, visible: true)
57
+ def xpath(text, n: 1, all: false, visible: true, parent: nil)
58
58
  @a0.wait.for do
59
- items = @a0.driver.find_elements :xpath, text
59
+ items = (parent || @a0.driver).find_elements :xpath, text
60
60
  choose(items, n, all, visible)
61
61
  end
62
62
  rescue => exception
data/lib/webdrone/form.rb CHANGED
@@ -65,7 +65,7 @@ module Webdrone
65
65
  x = heads.shift
66
66
  x ||= name
67
67
  worksheet.add_cell 0, 0, x
68
-
68
+
69
69
  heads += data.keys.sort
70
70
  heads = heads.uniq
71
71
 
@@ -87,8 +87,8 @@ module Webdrone
87
87
  @data = prev
88
88
  end
89
89
 
90
- def set(key, val, n: 1, visible: true)
91
- item = self.find_item(key, n: n, visible: visible)
90
+ def set(key, val, n: 1, visible: true, parent: nil)
91
+ item = self.find_item(key, n: n, visible: visible, parent: parent)
92
92
  if item.tag_name == 'select'
93
93
  option = item.find_element :xpath, XPath::HTML.option(val).to_s
94
94
  option.click
@@ -102,26 +102,26 @@ module Webdrone
102
102
  Webdrone.report_error(@a0, exception)
103
103
  end
104
104
 
105
- def get(key, n: 1, visible: true)
106
- self.find_item(key, n: n, visible: visible)[:value]
105
+ def get(key, n: 1, visible: true, parent: nil)
106
+ self.find_item(key, n: n, visible: visible, parent: parent)[:value]
107
107
  rescue => exception
108
108
  Webdrone.report_error(@a0, exception)
109
109
  end
110
110
 
111
- def clic(key, n: 1, visible: true)
112
- self.find_item(key, n: n, visible: visible).click
111
+ def clic(key, n: 1, visible: true, parent: nil)
112
+ self.find_item(key, n: n, visible: visible, parent: parent).click
113
113
  rescue => exception
114
114
  Webdrone.report_error(@a0, exception)
115
115
  end
116
116
 
117
- def mark(key, n: 1, visible: true, color: '#af1616', times: nil, delay: nil, shot: nil)
118
- @a0.mark.mark_item self.find_item(key, n: n, visible: visible), color: color, times: times, delay: delay, shot: shot
117
+ def mark(key, n: 1, visible: true, parent: nil, color: '#af1616', times: nil, delay: nil, shot: nil)
118
+ @a0.mark.mark_item self.find_item(key, n: n, visible: visible, parent: parent), color: color, times: times, delay: delay, shot: shot
119
119
  rescue => exception
120
120
  Webdrone.report_error(@a0, exception)
121
121
  end
122
122
 
123
- def submit(key = nil, n: 1, visible: true)
124
- self.find_item(key, n: n, visible: visible) if key
123
+ def submit(key = nil, n: 1, visible: true, parent: nil)
124
+ self.find_item(key, n: n, visible: visible, parent: parent) if key
125
125
  @lastitem.submit
126
126
  rescue => exception
127
127
  Webdrone.report_error(@a0, exception)
@@ -136,13 +136,13 @@ module Webdrone
136
136
  end
137
137
 
138
138
  protected
139
- def find_item(key, n: 1, visible: true)
139
+ def find_item(key, n: 1, visible: true, parent: nil)
140
140
  if @xpath.respond_to? :call
141
- @lastitem = @a0.find.xpath @xpath.call(key).to_s, n: n, visible: visible
141
+ @lastitem = @a0.find.xpath @xpath.call(key).to_s, n: n, visible: visible, parent: parent
142
142
  elsif @xpath.is_a? String and @xpath.include? '%s'
143
- @lastitem = @a0.find.xpath sprintf(@xpath, key), n: n, visible: visible
143
+ @lastitem = @a0.find.xpath sprintf(@xpath, key), n: n, visible: visible, parent: parent
144
144
  else
145
- @lastitem = @a0.find.xpath XPath::HTML.field(key).to_s, n: n, visible: visible
145
+ @lastitem = @a0.find.xpath XPath::HTML.field(key).to_s, n: n, visible: visible, parent: parent
146
146
  end
147
147
  end
148
148
  end
data/lib/webdrone/html.rb CHANGED
@@ -12,8 +12,8 @@ module Webdrone
12
12
  @a0 = a0
13
13
  end
14
14
 
15
- def find_html(text, n: 1, all: false, visible: true)
16
- item = @a0.find.send __callee__, text, n: n, all: all, visible: visible
15
+ def find_html(text, n: 1, all: false, visible: true, parent: nil)
16
+ item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, parent: parent
17
17
  if item.is_a? Array
18
18
  item.collect { |x| x.attribute 'innerHTML'}
19
19
  else
data/lib/webdrone/mark.rb CHANGED
@@ -14,8 +14,8 @@ module Webdrone
14
14
  @default_delay = ENV['WEBDRONE_MARK_DELAY'] || 0.05
15
15
  end
16
16
 
17
- def mark(text, n: 1, all: false, visible: true, color: '#af1616', times: nil, delay: nil, shot: nil)
18
- item = @a0.find.send __callee__, text, n: n, all: all, visible: visible
17
+ def mark(text, n: 1, all: false, visible: true, parent: nil, color: '#af1616', times: nil, delay: nil, shot: nil)
18
+ item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, parent: parent
19
19
  mark_item item, color: color, times: times, delay: delay, shot: shot, text: text
20
20
  rescue => exception
21
21
  Webdrone.report_error(@a0, exception)
data/lib/webdrone/text.rb CHANGED
@@ -12,8 +12,8 @@ module Webdrone
12
12
  @a0 = a0
13
13
  end
14
14
 
15
- def text(text, n: 1, all: false, visible: true)
16
- item = @a0.find.send __callee__, text, n: n, all: all, visible: visible
15
+ def text(text, n: 1, all: false, visible: true, parent: nil)
16
+ item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, parent: parent
17
17
  if item.is_a? Array
18
18
  item.collect(&:text)
19
19
  else
@@ -30,7 +30,7 @@ module Webdrone
30
30
  alias_method :on, :text
31
31
  alias_method :option, :text
32
32
  alias_method :xpath, :text
33
-
33
+
34
34
  def page_title
35
35
  @a0.driver.title
36
36
  rescue => exception
@@ -1,3 +1,3 @@
1
1
  module Webdrone
2
- VERSION = "1.6.2"
2
+ VERSION = "1.7.0"
3
3
  end
data/lib/webdrone/vrfy.rb CHANGED
@@ -12,8 +12,8 @@ module Webdrone
12
12
  @a0 = a0
13
13
  end
14
14
 
15
- def vrfy(text, n: 1, all: false, visible: true, attr: nil, eq: nil, contains: nil)
16
- item = @a0.find.send __callee__, text, n: n, all: all, visible: visible
15
+ def vrfy(text, n: 1, all: false, visible: true, parent: nil, attr: nil, eq: nil, contains: nil)
16
+ item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, parent: parent
17
17
  if item.is_a? Array
18
18
  item.each { |x| vrfy_item x, text: text, callee: __callee__, attr: attr, eq: eq, contains: contains }
19
19
  else
data/webdrone.gemspec CHANGED
@@ -27,13 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.10"
31
- spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "bundler", "~> 1.15"
31
+ spec.add_development_dependency "rake", "~> 10.5"
32
32
  spec.add_development_dependency "rspec"
33
33
  spec.add_development_dependency "ci_reporter_rspec"
34
34
  spec.add_development_dependency "parallel_tests"
35
35
  spec.add_runtime_dependency "os"
36
- spec.add_runtime_dependency "selenium-webdriver"
36
+ spec.add_runtime_dependency "selenium-webdriver", ">= 3.5.0"
37
37
  spec.add_runtime_dependency "xpath"
38
38
  spec.add_runtime_dependency "rubyXL"
39
39
  spec.add_runtime_dependency "binding_of_caller"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdrone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldrin Martoq
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-12 00:00:00.000000000 Z
11
+ date: 2017-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '1.15'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '1.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '10.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '10.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 3.5.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 3.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: xpath
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -238,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
238
  version: '0'
239
239
  requirements: []
240
240
  rubyforge_project:
241
- rubygems_version: 2.5.1
241
+ rubygems_version: 2.6.11
242
242
  signing_key:
243
243
  specification_version: 4
244
244
  summary: A simple selenium webdriver wrapper, ruby version.