webdriver 0.6.4 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9d1de554c15665df74da24e943ca9e50d9db27622723ab7e8229464ca19ef5c
4
- data.tar.gz: c753336a3fe63b440f34a8a7d259bb0a28da054050c084647a27e28daf691a0e
3
+ metadata.gz: 54136818f569b858653a2e8b1c3c254c3ac1de3cbe91471d70f14566b6831dba
4
+ data.tar.gz: 2dd30468267b9bec0a22356cadf1231d6e4f4088aadcffb9178ed1cbaead63a5
5
5
  SHA512:
6
- metadata.gz: b261d00f5c46ca37743120b5ed1689aaaebb786c67a0568442af7fca4094b455ddd4721542948e36a328b85ce13bc9c1bf807f2953c277169115c42901f5084c
7
- data.tar.gz: 456140e014ff199b04d6bbd7f55a8932f47c1f6a2bc60376a4f3e140b450b9e871eed3234aefacbba5364e73828f53639025e59ec815315de3b581ff5eb47c74
6
+ metadata.gz: fe04903aa48f907ef9db28b9cb805316891719cc6a159ae41369d5a47e73165fe3f0e8f46c1142d18ceb2d74da1d57ff991f36875ff0336e1ed6b590aad7532d
7
+ data.tar.gz: 4945825e44a81b9e6eafd748ffe24c37188ac7181fd792da9fdfbebb2d42f63fdacccf84609853c3e837476179ffd00140e4f0feaa3673e39718b811abfb8497
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- webdriver (0.6.4)
4
+ webdriver (0.10.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,39 +1,11 @@
1
- # Webdriver
1
+ # webdriver
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/webdriver`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ A Ruby https://www.w3.org/TR/webdriver/ driver
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ ## Notes for implementators
6
6
 
7
- ## Installation
8
-
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'webdriver'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
20
-
21
- $ gem install webdriver
22
-
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
- ## Contributing
34
-
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/webdriver.
36
-
37
- ## License
38
-
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
7
+ - `element.value!` is slow when compared to JavaScript `el.value = ...`
8
+ - element visibility helper `element.displayed?`
9
+ hitrate.
10
+ - Remember to use JavaScript multiline strings \` \` in `session.async_exec`
11
+ - looks like delaying 0.5s between element find and click improves
@@ -11,6 +11,8 @@ module Webdriver
11
11
  end
12
12
 
13
13
  require_relative "webdriver/version"
14
+ require_relative "webdriver/errors"
15
+
14
16
  require_relative "webdriver/connection"
15
17
  require_relative "webdriver/prefix_connection"
16
18
 
@@ -3,6 +3,7 @@ module Webdriver
3
3
  def initialize endpoint
4
4
  uri = URI(endpoint)
5
5
  @http = Net::HTTP.new uri.hostname, uri.port
6
+ @mutex = Mutex.new
6
7
  end
7
8
 
8
9
  def get path, headers={}
@@ -22,15 +23,17 @@ module Webdriver
22
23
  body_json = body.to_json if body
23
24
  Webdriver.debug [method, path, headers, body_json]
24
25
 
25
- response = case method
26
- when :get
27
- @http.get path
28
- when :post
29
- @http.post path, body_json
30
- when :delete
31
- @http.delete path, body_json
32
- else
33
- raise "err"
26
+ response = @mutex.synchronize do
27
+ case method
28
+ when :get
29
+ @http.get path
30
+ when :post
31
+ @http.post path, body_json
32
+ when :delete
33
+ @http.delete path, body_json
34
+ else
35
+ raise "err"
36
+ end
34
37
  end
35
38
 
36
39
  response_body = JSON.parse response.body
@@ -47,9 +50,11 @@ module Webdriver
47
50
  else # everything else works like this
48
51
  value
49
52
  end
53
+ when 10
54
+ raise Webdriver::StaleElementReferenceError
55
+ when 11
56
+ raise Webdriver::ElementNotInteractableError
50
57
  when 1..nil
51
- # 10: stale element reference: element is not attached to the page document
52
- # 11: element not interactable
53
58
  error_message = value.dig("message")
54
59
  raise "#{status}: #{error_message}"
55
60
  else
@@ -9,10 +9,19 @@ module Webdriver
9
9
  @connection = Webdriver::PrefixConnection.new "element/#{@id}", connection
10
10
  end
11
11
 
12
+ def ==(other)
13
+ return false unless other.is_a? Webdriver::Element
14
+ @id == other.id
15
+ end
16
+
12
17
  def screenshot
13
18
  @connection.get "screenshot"
14
19
  end
15
20
 
21
+ def displayed?
22
+ @connection.get "displayed"
23
+ end
24
+
16
25
  # checkbox
17
26
  def selected?
18
27
  @connection.get "selected"
@@ -0,0 +1,6 @@
1
+ module Webdriver
2
+ # 10
3
+ class StaleElementReferenceError < StandardError; end
4
+ # 11
5
+ class ElementNotInteractableError < StandardError; end
6
+ end
@@ -22,6 +22,20 @@ module Webdriver
22
22
  # @connection.post "source"
23
23
  # end
24
24
 
25
+ def chromium_network_conditions
26
+ @connection.get "chromium/network_conditions"
27
+ end
28
+
29
+ def chromium_network_conditions=(conditions)
30
+ @connection.post "chromium/network_conditions", {}, conditions
31
+ self
32
+ end
33
+
34
+ def chromium_network_conditions_delete!
35
+ @connection.delete "chromium/network_conditions"
36
+ self
37
+ end
38
+
25
39
  def dismiss_alert!
26
40
  @connection.post "alert/dismiss"
27
41
  self
@@ -1,3 +1,3 @@
1
1
  module Webdriver
2
- VERSION = "0.6.4"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-25 00:00:00.000000000 Z
11
+ date: 2020-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -157,6 +157,7 @@ files:
157
157
  - lib/webdriver/connection.rb
158
158
  - lib/webdriver/cookie.rb
159
159
  - lib/webdriver/element.rb
160
+ - lib/webdriver/errors.rb
160
161
  - lib/webdriver/prefix_connection.rb
161
162
  - lib/webdriver/session.rb
162
163
  - lib/webdriver/version.rb
@@ -166,7 +167,7 @@ homepage: https://www.github.com/matti/webdriver
166
167
  licenses:
167
168
  - MIT
168
169
  metadata: {}
169
- post_install_message:
170
+ post_install_message:
170
171
  rdoc_options: []
171
172
  require_paths:
172
173
  - lib
@@ -182,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
183
  version: '0'
183
184
  requirements: []
184
185
  rubygems_version: 3.0.6
185
- signing_key:
186
+ signing_key:
186
187
  specification_version: 4
187
188
  summary: webdriver
188
189
  test_files: []