async-webdriver 0.1.1 → 0.2.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
- checksums.yaml.gz.sig +0 -0
- data/lib/async/webdriver/bridge/chrome.rb +81 -0
- data/lib/async/webdriver/bridge/firefox.rb +80 -0
- data/lib/async/webdriver/bridge/generic.rb +91 -0
- data/lib/async/webdriver/bridge/pool.rb +99 -0
- data/lib/async/webdriver/bridge/process_group.rb +77 -0
- data/lib/async/webdriver/bridge.rb +30 -0
- data/lib/async/webdriver/client.rb +71 -26
- data/lib/async/webdriver/element.rb +270 -17
- data/lib/async/webdriver/error.rb +214 -0
- data/lib/async/webdriver/locator.rb +127 -0
- data/lib/async/webdriver/request_helper.rb +120 -0
- data/lib/async/webdriver/scope/alerts.rb +40 -0
- data/lib/async/webdriver/scope/cookies.rb +43 -0
- data/lib/async/webdriver/scope/document.rb +41 -0
- data/lib/async/webdriver/scope/elements.rb +111 -0
- data/lib/async/webdriver/scope/fields.rb +66 -0
- data/lib/async/webdriver/scope/frames.rb +33 -0
- data/lib/async/webdriver/scope/navigation.rb +50 -0
- data/lib/async/webdriver/scope/printing.rb +22 -0
- data/lib/async/webdriver/scope/screen_capture.rb +23 -0
- data/lib/async/webdriver/scope/timeouts.rb +63 -0
- data/lib/async/webdriver/scope.rb +15 -0
- data/lib/async/webdriver/session.rb +107 -65
- data/lib/async/webdriver/version.rb +8 -3
- data/lib/async/webdriver/xpath.rb +29 -0
- data/lib/async/webdriver.rb +7 -12
- data/{LICENSE.txt → license.md} +6 -6
- data/readme.md +37 -0
- data.tar.gz.sig +0 -0
- metadata +71 -149
- metadata.gz.sig +0 -0
- data/.gitignore +0 -11
- data/.rspec +0 -3
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -7
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -103
- data/Guardfile +0 -45
- data/README.md +0 -3
- data/Rakefile +0 -6
- data/async-webdriver.gemspec +0 -37
- data/bin/console +0 -12
- data/bin/setup +0 -8
- data/examples/multiple_sessions.rb +0 -29
- data/lib/async/webdriver/connection.rb +0 -69
- data/lib/async/webdriver/connection_path.rb +0 -25
- data/lib/async/webdriver/execute.rb +0 -29
- data/lib/async/webdriver/session_creator.rb +0 -22
@@ -1,70 +1,112 @@
|
|
1
|
-
|
2
|
-
module Webdriver
|
3
|
-
class Session
|
4
|
-
def initialize(json:, connection:)
|
5
|
-
@capabilities = json.fetch "capabilities"
|
6
|
-
@id = json.fetch "id"
|
7
|
-
|
8
|
-
@session_connection = ConnectionPath.new "session/#{@id}", connection: connection
|
9
|
-
@execute = Execute.new connection: @session_connection
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :id, :execute
|
13
|
-
|
14
|
-
|
15
|
-
def elements
|
16
|
-
body = {
|
17
|
-
using: "css selector",
|
18
|
-
value: "html"
|
19
|
-
}
|
20
|
-
|
21
|
-
session_id, value = @session_connection.call method: "post", path: "elements", body: body
|
22
|
-
list = []
|
23
|
-
for e in value do
|
24
|
-
list << Element.new(json: e, connection: @session_connection)
|
25
|
-
end
|
26
|
-
list
|
27
|
-
end
|
1
|
+
# frozen_string_literal: true
|
28
2
|
|
29
|
-
|
30
|
-
|
31
|
-
end
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2023, by Samuel Williams.
|
32
5
|
|
33
|
-
|
34
|
-
|
35
|
-
url: url
|
36
|
-
}
|
6
|
+
require_relative 'request_helper'
|
7
|
+
require_relative 'element'
|
37
8
|
|
38
|
-
|
39
|
-
self
|
40
|
-
end
|
9
|
+
require_relative 'scope'
|
41
10
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
11
|
+
module Async
|
12
|
+
module WebDriver
|
13
|
+
# A session represents a single browser session, potentially with multiple windows. It is the primary interface for interacting with a browser.
|
14
|
+
#
|
15
|
+
# ``` ruby
|
16
|
+
# begin
|
17
|
+
# bridge = Async::WebDriver::Bridge::Pool.start(Async::WebDriver::Bridge::Chrome.new)
|
18
|
+
# session = bridge.session
|
19
|
+
# session.navigate_to("https://google.com")
|
20
|
+
# # ...
|
21
|
+
# ensure
|
22
|
+
# bridge&.close
|
23
|
+
# end
|
24
|
+
# ```
|
25
|
+
class Session
|
26
|
+
# Open a new session.
|
27
|
+
# @parameter endpoint [Async::HTTP::Endpoint] The endpoint to connect to.
|
28
|
+
# @yields {|session| ...} The session will be closed automatically if you provide a block.
|
29
|
+
# @parameter session [Session] The session.
|
30
|
+
# @returns [Session] The session if no block is given.
|
31
|
+
def self.open(endpoint, *arguments, **options)
|
32
|
+
client = self.new(
|
33
|
+
Async::HTTP::Client.open(endpoint, **options),
|
34
|
+
*arguments
|
35
|
+
)
|
36
|
+
|
37
|
+
return client unless block_given?
|
38
|
+
|
39
|
+
begin
|
40
|
+
yield client
|
41
|
+
ensure
|
42
|
+
client.close
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Initialize the session.
|
47
|
+
# @parameter delegate [Protocol::HTTP::Middleware] The underlying HTTP client (or wrapper).
|
48
|
+
# @parameter id [String] The session identifier.
|
49
|
+
# @parameter capabilities [Hash] The capabilities of the session.
|
50
|
+
def initialize(delegate, id, capabilities)
|
51
|
+
@delegate = delegate
|
52
|
+
@id = id
|
53
|
+
@capabilities = capabilities
|
54
|
+
end
|
55
|
+
|
56
|
+
def inspect
|
57
|
+
"\#<#{self.class} id=#{@id.inspect}>"
|
58
|
+
end
|
59
|
+
|
60
|
+
# @attribute [Protocol::HTTP::Middleware] The underlying HTTP client (or wrapper).
|
61
|
+
attr :delegate
|
62
|
+
|
63
|
+
# @attribute [String] The session identifier.
|
64
|
+
attr :id
|
65
|
+
|
66
|
+
# @attribute [Hash] The capabilities of the session.
|
67
|
+
attr :capabilities
|
68
|
+
|
69
|
+
# The path used for making requests to the web driver bridge.
|
70
|
+
# @parameter path [String | Nil] The path to append to the request path.
|
71
|
+
# @returns [String] The path used for making requests to the web driver bridge.
|
72
|
+
def request_path(path = nil)
|
73
|
+
if path
|
74
|
+
"/session/#{@id}/#{path}"
|
75
|
+
else
|
76
|
+
"/session/#{@id}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
include RequestHelper
|
81
|
+
|
82
|
+
# Close the session.
|
83
|
+
def close
|
84
|
+
if @delegate
|
85
|
+
self.delete
|
86
|
+
@delegate = nil
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# @returns [Session] The session.
|
91
|
+
def session
|
92
|
+
self
|
93
|
+
end
|
94
|
+
|
95
|
+
# @returns [Session] The current scope.
|
96
|
+
def current_scope
|
97
|
+
self
|
98
|
+
end
|
99
|
+
|
100
|
+
include Scope::Alerts
|
101
|
+
include Scope::Cookies
|
102
|
+
include Scope::Document
|
103
|
+
include Scope::Elements
|
104
|
+
include Scope::Fields
|
105
|
+
include Scope::Frames
|
106
|
+
include Scope::Navigation
|
107
|
+
include Scope::Printing
|
108
|
+
include Scope::ScreenCapture
|
109
|
+
include Scope::Timeouts
|
110
|
+
end
|
111
|
+
end
|
70
112
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2023, by Samuel Williams.
|
5
|
+
|
6
|
+
module Async
|
7
|
+
module WebDriver
|
8
|
+
# Helpers for working with XPath.
|
9
|
+
module XPath
|
10
|
+
# Escape a value for use in XPath.
|
11
|
+
#
|
12
|
+
# XPath 1.0 does not provide any standard mechanism for escaping quotes, so we have to do it ourselves using `concat`.
|
13
|
+
#
|
14
|
+
# @parameter value [String | Numeric] The value to escape.
|
15
|
+
def self.escape(value)
|
16
|
+
case value
|
17
|
+
when String
|
18
|
+
if value.include?("'")
|
19
|
+
"concat('#{value.split("'").join("', \"'\", '")}')"
|
20
|
+
else
|
21
|
+
"'#{value}'"
|
22
|
+
end
|
23
|
+
else
|
24
|
+
value.to_s
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/async/webdriver.rb
CHANGED
@@ -1,15 +1,10 @@
|
|
1
|
-
|
2
|
-
module Webdriver
|
3
|
-
end
|
4
|
-
end
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
require_relative "webdriver/connection"
|
9
|
-
require_relative "webdriver/connection_path"
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2023, by Samuel Williams.
|
10
5
|
|
11
|
-
require_relative
|
12
|
-
require_relative
|
6
|
+
require_relative 'webdriver/bridge'
|
7
|
+
require_relative 'webdriver/bridge/pool'
|
13
8
|
|
14
|
-
require_relative
|
15
|
-
require_relative
|
9
|
+
require_relative 'webdriver/client'
|
10
|
+
require_relative 'webdriver/locator'
|
data/{LICENSE.txt → license.md}
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
# MIT License
|
2
2
|
|
3
|
-
Copyright
|
3
|
+
Copyright, 2023, by Samuel Williams.
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
9
|
copies of the Software, and to permit persons to whom the Software is
|
10
10
|
furnished to do so, subject to the following conditions:
|
11
11
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
13
|
-
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
14
|
|
15
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/readme.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Async::WebDriver
|
2
|
+
|
3
|
+
Provides a client implementation of the W3C WebDriver specification with support for Chrome and Firefox.
|
4
|
+
|
5
|
+
[](https://github.com/socketry/async-webdriver/actions?workflow=Test)
|
6
|
+
|
7
|
+
## Motivation
|
8
|
+
|
9
|
+
In the past, I've used [selenium-webdriver](https://github.com/SeleniumHQ/selenium) for testing web applications. However, I found it to be slow. I wanted to improve the performance of my tests, so I decided to write a new implementation from scratch. The W3C WebDriver specification is quite simple, so it wasn't too difficult to implement, and I was able to get a significant performance improvement, between 2x-10x depending on the usage. Specifically, most test suites can take advantage of pre-warmed sessions, which can minimise the overhead of each test running in a new session. Additionally, I'd like to explore reusing sessions between tests, which could provide even more performance improvements.
|
10
|
+
|
11
|
+
In addition, building on top of [async](https://github.com/socketry/async) allows us to take advantage of [async-http](https://github.com/socketry/async-http) running in the same reactor, which can provide a significant performance improvement over the existing HTTP servers like [capybara](https://github.com/teamcapybara/capybara) which need to start a separate application server process. This also makes it possible to share a single database transaction between the client and server, which can significantly reduce the overhead of "cleaning" the database after each test, and improve the opportunity for parallelisation.
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
Please see the [project documentation](https://socketry.github.io/async-webdriver/) for more details.
|
16
|
+
|
17
|
+
- [Getting Started](https://socketry.github.io/async-webdriver/guides/getting-started/index) - This guide explains how to use `async-webdriver` for controlling a browser.
|
18
|
+
|
19
|
+
- [GitHub Actions Integrations](https://socketry.github.io/async-webdriver/guides/github-actions-integration/index) - This guide explains how to use `async-webdriver` with GitHub Actions.
|
20
|
+
|
21
|
+
## Contributing
|
22
|
+
|
23
|
+
We welcome contributions to this project.
|
24
|
+
|
25
|
+
1. Fork it.
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`).
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`).
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`).
|
29
|
+
5. Create new Pull Request.
|
30
|
+
|
31
|
+
### Developer Certificate of Origin
|
32
|
+
|
33
|
+
This project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.
|
34
|
+
|
35
|
+
### Contributor Covenant
|
36
|
+
|
37
|
+
This project is governed by [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,177 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
9
|
-
bindir:
|
10
|
-
cert_chain:
|
11
|
-
|
7
|
+
- Samuel Williams
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
|
14
|
+
ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
|
15
|
+
CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
|
16
|
+
MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
|
17
|
+
MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
|
18
|
+
bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
|
19
|
+
igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
|
20
|
+
9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
|
21
|
+
sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
|
22
|
+
e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
|
23
|
+
XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
|
24
|
+
RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
|
25
|
+
tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
|
26
|
+
zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
|
27
|
+
xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
|
28
|
+
BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
|
29
|
+
aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
|
30
|
+
aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
|
31
|
+
cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
|
32
|
+
xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
|
33
|
+
c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
|
34
|
+
8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
|
35
|
+
JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
|
36
|
+
eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
|
37
|
+
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
38
|
+
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
39
|
+
-----END CERTIFICATE-----
|
40
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
12
41
|
dependencies:
|
13
42
|
- !ruby/object:Gem::Dependency
|
14
43
|
name: async-http
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: selenium-webdriver
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: bundler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.16'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.16'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '10.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '10.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
44
|
requirement: !ruby/object:Gem::Requirement
|
72
45
|
requirements:
|
73
46
|
- - "~>"
|
74
47
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
type: :
|
48
|
+
version: '0.42'
|
49
|
+
type: :runtime
|
77
50
|
prerelease: false
|
78
51
|
version_requirements: !ruby/object:Gem::Requirement
|
79
52
|
requirements:
|
80
53
|
- - "~>"
|
81
54
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
83
|
-
|
84
|
-
name: guard
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: guard-rspec
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: async-rspec
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: pry-byebug
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
description:
|
55
|
+
version: '0.42'
|
56
|
+
description:
|
140
57
|
email:
|
141
|
-
- matti.paksula@iki.fi
|
142
58
|
executables: []
|
143
59
|
extensions: []
|
144
60
|
extra_rdoc_files: []
|
145
61
|
files:
|
146
|
-
- ".gitignore"
|
147
|
-
- ".rspec"
|
148
|
-
- ".ruby-gemset"
|
149
|
-
- ".ruby-version"
|
150
|
-
- ".travis.yml"
|
151
|
-
- Gemfile
|
152
|
-
- Gemfile.lock
|
153
|
-
- Guardfile
|
154
|
-
- LICENSE.txt
|
155
|
-
- README.md
|
156
|
-
- Rakefile
|
157
|
-
- async-webdriver.gemspec
|
158
|
-
- bin/console
|
159
|
-
- bin/setup
|
160
|
-
- examples/multiple_sessions.rb
|
161
62
|
- lib/async/webdriver.rb
|
63
|
+
- lib/async/webdriver/bridge.rb
|
64
|
+
- lib/async/webdriver/bridge/chrome.rb
|
65
|
+
- lib/async/webdriver/bridge/firefox.rb
|
66
|
+
- lib/async/webdriver/bridge/generic.rb
|
67
|
+
- lib/async/webdriver/bridge/pool.rb
|
68
|
+
- lib/async/webdriver/bridge/process_group.rb
|
162
69
|
- lib/async/webdriver/client.rb
|
163
|
-
- lib/async/webdriver/connection.rb
|
164
|
-
- lib/async/webdriver/connection_path.rb
|
165
70
|
- lib/async/webdriver/element.rb
|
166
|
-
- lib/async/webdriver/
|
71
|
+
- lib/async/webdriver/error.rb
|
72
|
+
- lib/async/webdriver/locator.rb
|
73
|
+
- lib/async/webdriver/request_helper.rb
|
74
|
+
- lib/async/webdriver/scope.rb
|
75
|
+
- lib/async/webdriver/scope/alerts.rb
|
76
|
+
- lib/async/webdriver/scope/cookies.rb
|
77
|
+
- lib/async/webdriver/scope/document.rb
|
78
|
+
- lib/async/webdriver/scope/elements.rb
|
79
|
+
- lib/async/webdriver/scope/fields.rb
|
80
|
+
- lib/async/webdriver/scope/frames.rb
|
81
|
+
- lib/async/webdriver/scope/navigation.rb
|
82
|
+
- lib/async/webdriver/scope/printing.rb
|
83
|
+
- lib/async/webdriver/scope/screen_capture.rb
|
84
|
+
- lib/async/webdriver/scope/timeouts.rb
|
167
85
|
- lib/async/webdriver/session.rb
|
168
|
-
- lib/async/webdriver/session_creator.rb
|
169
86
|
- lib/async/webdriver/version.rb
|
170
|
-
|
87
|
+
- lib/async/webdriver/xpath.rb
|
88
|
+
- license.md
|
89
|
+
- readme.md
|
90
|
+
homepage: https://github.com/socketry/async-webdriver/
|
171
91
|
licenses:
|
172
92
|
- MIT
|
173
|
-
metadata:
|
174
|
-
|
93
|
+
metadata:
|
94
|
+
documentation_uri: https://socketry.github.io/async-webdriver/
|
95
|
+
funding_uri: https://github.com/sponsors/ioquatix
|
96
|
+
post_install_message:
|
175
97
|
rdoc_options: []
|
176
98
|
require_paths:
|
177
99
|
- lib
|
@@ -179,15 +101,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
101
|
requirements:
|
180
102
|
- - ">="
|
181
103
|
- !ruby/object:Gem::Version
|
182
|
-
version: '0'
|
104
|
+
version: '3.0'
|
183
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
106
|
requirements:
|
185
107
|
- - ">="
|
186
108
|
- !ruby/object:Gem::Version
|
187
109
|
version: '0'
|
188
110
|
requirements: []
|
189
|
-
rubygems_version: 3.
|
190
|
-
signing_key:
|
111
|
+
rubygems_version: 3.4.22
|
112
|
+
signing_key:
|
191
113
|
specification_version: 4
|
192
|
-
summary:
|
114
|
+
summary: A native library implementing the W3C WebDriver client specification.
|
193
115
|
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
async-webdriver
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.6.0
|
data/.travis.yml
DELETED