selenium-webdriver 4.33.0 → 4.35.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/CHANGES +18 -5
- data/bin/linux/selenium-manager +0 -0
- data/bin/macos/selenium-manager +0 -0
- data/bin/windows/selenium-manager.exe +0 -0
- data/lib/selenium/webdriver/atoms/findElements.js +2 -2
- data/lib/selenium/webdriver/atoms/isDisplayed.js +2 -2
- data/lib/selenium/webdriver/bidi/network/url_pattern.rb +1 -1
- data/lib/selenium/webdriver/common/child_process.rb +4 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb +7 -1
- data/lib/selenium/webdriver/common/keys.rb +9 -0
- data/lib/selenium/webdriver/common/proxy.rb +1 -0
- data/lib/selenium/webdriver/common/wait.rb +1 -1
- data/lib/selenium/webdriver/common/zipper.rb +12 -2
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec668a5c5955cd9e7cb5043758444d5327fed5d294e2b8d083b697d3c7b1d254
|
4
|
+
data.tar.gz: 59d44985b7930295cfcc71cfa64bdcd3428f8580a0e3eb35a98b4ad69080c835
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1838ed8ff8ea7d33bc5ccc2db54715223f82bfdd9a7a427bae6062fc1a6976e78b721382f4b94a710d1a7814e35842c0bb74e17a7e89b7b14d4760d3488e539
|
7
|
+
data.tar.gz: 2161b82493b1c1de27980ede799dec2de1a8ed6fb9ace4f9394004cddee4433a7da86714425cc097ba6c2a9a457369b49e35dccd205424027a9bc26821393893
|
data/CHANGES
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
4.35.0 (2025-08-12)
|
2
|
+
=========================
|
3
|
+
* Add CDP for Chrome 139 and remove 136
|
4
|
+
* Fix typos in javascript & rb (#16019)
|
5
|
+
* Allow to use `rubyzip` v3 (#16108)
|
6
|
+
|
7
|
+
4.34.0 (2025-06-29)
|
8
|
+
=========================
|
9
|
+
* Add CDP for Chrome 138 and remove 135
|
10
|
+
* Fix child process terminate method when a process is already terminated (#15789)
|
11
|
+
* Deprecate ftp proxy (#15926)
|
12
|
+
* Add macOS key mappings for Options and Function keys (#15959)
|
13
|
+
|
1
14
|
4.33.0 (2025-05-23)
|
2
15
|
=========================
|
3
16
|
* Add CDP for Chrome 137 and remove 134
|
@@ -1848,7 +1861,7 @@ Safari:
|
|
1848
1861
|
* Replace 'libwebsocket' with 'websocket' gem. This should ensure
|
1849
1862
|
support with recent Safari.
|
1850
1863
|
Other:
|
1851
|
-
* Fix Cygwin issue in PortProber/Firefox::
|
1864
|
+
* Fix Cygwin issue in PortProber/Firefox::Binary (#4963)
|
1852
1865
|
|
1853
1866
|
2.27.2 (2012-12-11)
|
1854
1867
|
===================
|
@@ -1938,7 +1951,7 @@ IE:
|
|
1938
1951
|
* Fix conflict with ActiveSupport's Object#load (#3819)
|
1939
1952
|
* IE:
|
1940
1953
|
* Default to standalone server executable, fall back to bundled DLLs.
|
1941
|
-
* The 'nativeEvents'
|
1954
|
+
* The 'nativeEvents' capability is exposed as :native_events in the Ruby client (mode still experimental).
|
1942
1955
|
* Firefox:
|
1943
1956
|
* Native events for Firefox 12.
|
1944
1957
|
* Native events retained for Firefox 3.x, 10 and 11.
|
@@ -2078,7 +2091,7 @@ IE:
|
|
2078
2091
|
===================
|
2079
2092
|
|
2080
2093
|
* Firefox:
|
2081
|
-
* Now supports up to Firefox 11 (for
|
2094
|
+
* Now supports up to Firefox 11 (for synthesized events)
|
2082
2095
|
* Implicit waits now change how long we wait for alerts. This
|
2083
2096
|
functionality will change in 2.16
|
2084
2097
|
* Fix scrolling issue (#2700)
|
@@ -2272,7 +2285,7 @@ IE:
|
|
2272
2285
|
2.1.0 (2011-07-18)
|
2273
2286
|
==================
|
2274
2287
|
|
2275
|
-
* Various
|
2288
|
+
* Various improvements to the IE driver (#2049, #1870)
|
2276
2289
|
* Atoms fixes (#1776, #1972).
|
2277
2290
|
* Synthetic mouse clicks do not propagate errors in onmouseover.
|
2278
2291
|
|
@@ -2422,7 +2435,7 @@ IE:
|
|
2422
2435
|
* Cookie expiration dates are now handled correctly (#730)
|
2423
2436
|
* Make Driver#bridge private, since this seems to be a common cause of confusion.
|
2424
2437
|
* Add {Element,Remote::Capabilities}#as_json for Rails 3 (http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/)
|
2425
|
-
* User can configure path to
|
2438
|
+
* User can configure path to executables with {Firefox,Chrome}.path = "/some/path"
|
2426
2439
|
* Added "chromium" as a possible name for the Chrome binary (#769)
|
2427
2440
|
* Correctly set the HTTP client timeout (#768)
|
2428
2441
|
* switch_to.window with block now handles exceptions and non-local returns.
|
data/bin/linux/selenium-manager
CHANGED
Binary file
|
data/bin/macos/selenium-manager
CHANGED
Binary file
|
Binary file
|
@@ -24,8 +24,8 @@ Number(d[1]),c=Number(d[2]),d=Number(d[3]),0<=b&&255>=b&&0<=c&&255>=c&&0<=d&&255
|
|
24
24
|
function hb(a,b){var c=a.currentStyle||a.style,d=c[b];void 0===d&&k(c.getPropertyValue)&&(d=c.getPropertyValue(b));return"inherit"!=d?void 0!==d?d:null:(a=gb(a))?hb(a,b):null}
|
25
25
|
function ib(a,b,c){function d(g){var l=S(g);return 0<l.height&&0<l.width?!0:P(g,"PATH")&&(0<l.height||0<l.width)?(g=R(g,"stroke-width"),!!g&&0<parseInt(g,10)):"hidden"!=R(g,"overflow")&&ia(g.childNodes,function(z){return 3==z.nodeType||P(z)&&d(z)})}function e(g){return jb(g)==T&&ja(g.childNodes,function(l){return!P(l)||e(l)||!d(l)})}if(!P(a))throw Error("Argument to isShown must be of type Element");if(P(a,"BODY"))return!0;if(P(a,"OPTION")||P(a,"OPTGROUP"))return a=La(a,function(g){return P(g,"SELECT")}),
|
26
26
|
!!a&&ib(a,!0,c);var f=kb(a);if(f)return!!f.image&&0<f.rect.width&&0<f.rect.height&&ib(f.image,b,c);if(P(a,"INPUT")&&"hidden"==a.type.toLowerCase()||P(a,"NOSCRIPT"))return!1;f=R(a,"visibility");return"collapse"!=f&&"hidden"!=f&&c(a)&&(b||0!=lb(a))&&d(a)?!e(a):!1}
|
27
|
-
function mb(a){function b(c){if(P(c)&&"none"==R(c,"display"))return!1;var d;if((d=c.parentNode)&&d.shadowRoot&&void 0!==c.assignedSlot)d=c.assignedSlot?c.assignedSlot.parentNode:null;else if(c.getDestinationInsertionPoints){var e=c.getDestinationInsertionPoints();0<e.length&&(d=e[e.length-1])}if(fb&&d instanceof ShadowRoot){if(d.host.shadowRoot&&d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&P(d,"DETAILS")&&!d.open&&!P(c,"SUMMARY")
|
28
|
-
b)}var T="hidden";
|
27
|
+
function mb(a){function b(c){if(P(c)&&("none"==R(c,"display")||"hidden"==R(c,"content-visibility")))return!1;var d;if((d=c.parentNode)&&d.shadowRoot&&void 0!==c.assignedSlot)d=c.assignedSlot?c.assignedSlot.parentNode:null;else if(c.getDestinationInsertionPoints){var e=c.getDestinationInsertionPoints();0<e.length&&(d=e[e.length-1])}if(fb&&d instanceof ShadowRoot){if(d.host.shadowRoot&&d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&P(d,"DETAILS")&&!d.open&&!P(c,"SUMMARY")?
|
28
|
+
!1:!!d&&b(d):!0}return ib(a,!1,b)}var T="hidden";
|
29
29
|
function jb(a){function b(m){function p(wa){if(wa==g)return!0;var Pa=R(wa,"display");return 0==Pa.lastIndexOf("inline",0)||"contents"==Pa||"absolute"==Qa&&"static"==R(wa,"position")?!1:!0}var Qa=R(m,"position");if("fixed"==Qa)return A=!0,m==g?null:g;for(m=gb(m);m&&!p(m);)m=gb(m);return m}function c(m){var p=m;if("visible"==z)if(m==g&&l)p=l;else if(m==l)return{x:"visible",y:"visible"};p={x:R(p,"overflow-x"),y:R(p,"overflow-y")};m==g&&(p.x="visible"==p.x?"auto":p.x,p.y="visible"==p.y?"auto":p.y);return p}
|
30
30
|
function d(m){if(m==g){var p=(new Ia(f)).a;m=p.scrollingElement?p.scrollingElement:Ba||"CSS1Compat"!=p.compatMode?p.body||p.documentElement:p.documentElement;p=p.parentWindow||p.defaultView;m=E&&Ha("10")&&p.pageYOffset!=m.scrollTop?new G(m.scrollLeft,m.scrollTop):new G(p.pageXOffset||m.scrollLeft,p.pageYOffset||m.scrollTop)}else m=new G(m.scrollLeft,m.scrollTop);return m}var e=nb(a),f=J(a),g=f.documentElement,l=f.body,z=R(g,"overflow"),A;for(a=b(a);a;a=b(a)){var t=c(a);if("visible"!=t.x||"visible"!=
|
31
31
|
t.y){var v=S(a);if(0==v.width||0==v.height)return T;var B=e.a<v.a,K=e.b<v.b;if(B&&"hidden"==t.x||K&&"hidden"==t.y)return T;if(B&&"visible"!=t.x||K&&"visible"!=t.y){B=d(a);K=e.b<v.b-B.y;if(e.a<v.a-B.x&&"visible"!=t.x||K&&"visible"!=t.x)return T;e=jb(a);return e==T?T:"scroll"}B=e.h>=v.a+v.width;v=e.j>=v.b+v.height;if(B&&"hidden"==t.x||v&&"hidden"==t.y)return T;if(B&&"visible"!=t.x||v&&"visible"!=t.y){if(A&&(t=d(a),e.h>=g.scrollWidth-t.x||e.a>=g.scrollHeight-t.y))return T;e=jb(a);return e==T?T:"scroll"}}}return"none"}
|
@@ -24,5 +24,5 @@ return b}
|
|
24
24
|
function Oa(a){var b=P(a,"MAP");if(!b&&!P(a,"AREA"))return null;var c=b?a:P(a.parentNode,"MAP")?a.parentNode:null,e=null,d=null;if(c&&c.name){e='*[usemap="#'+c.name+'"]';c=N(c);var f;if(f="function"!=aa(c.querySelector)&&C&&(C?0<=na(I,8):Ba(8))){f=c.querySelector;var h=typeof f;f=!("object"==h&&null!=f||"function"==h)}if(f)throw Error("CSS selection is not supported");if(!e)throw new m(32,"No selector specified");e=u(e);try{var n=c.querySelector(e)}catch(D){throw new m(32,"An invalid or illegal selector was specified");}if(e=
|
25
25
|
n&&1==n.nodeType?n:null)d=V(e),b||"default"==a.shape.toLowerCase()||(a=Ra(a),b=Math.min(Math.max(a.a,0),d.width),n=Math.min(Math.max(a.b,0),d.height),d=new R(b+d.a,n+d.b,Math.min(a.width,d.width-b),Math.min(a.height,d.height-n)))}return{image:e,rect:d||new R(0,0,0,0)}}
|
26
26
|
function Ra(a){var b=a.shape.toLowerCase();a=a.coords.split(",");if("rect"==b&&4==a.length){b=a[0];var c=a[1];return new R(b,c,a[2]-b,a[3]-c)}if("circle"==b&&3==a.length)return b=a[2],new R(a[0]-b,a[1]-b,2*b,2*b);if("poly"==b&&2<a.length){b=a[0];c=a[1];for(var e=b,d=c,f=2;f+1<a.length;f+=2)b=Math.min(b,a[f]),e=Math.max(e,a[f]),c=Math.min(c,a[f+1]),d=Math.max(d,a[f+1]);return new R(b,c,e-b,d-c)}return new R(0,0,0,0)}function Qa(a){a=V(a);return new Q(a.b,a.a+a.width,a.b+a.height,a.a)}
|
27
|
-
function Pa(a){if(Ia){if("relative"==T(a,"position"))return 1;a=T(a,"filter");return(a=a.match(/^alpha\(opacity=(\d*)\)/)||a.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/))?Number(a[1])/100:1}return Sa(a)}function Sa(a){var b=1,c=T(a,"opacity");c&&(b=Number(c));(a=S(a))&&(b*=Sa(a));return b};function Ta(a,b){function c(e){if(P(e)&&"none"==T(e,"display"))return!1;var d;if((d=e.parentNode)&&d.shadowRoot&&void 0!==e.assignedSlot)d=e.assignedSlot?e.assignedSlot.parentNode:null;else if(e.getDestinationInsertionPoints){var f=e.getDestinationInsertionPoints();0<f.length&&(d=f[f.length-1])}if(La&&d instanceof ShadowRoot){if(d.host.shadowRoot&&d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&P(d,"DETAILS")&&!d.open&&!P(e,
|
28
|
-
|
27
|
+
function Pa(a){if(Ia){if("relative"==T(a,"position"))return 1;a=T(a,"filter");return(a=a.match(/^alpha\(opacity=(\d*)\)/)||a.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/))?Number(a[1])/100:1}return Sa(a)}function Sa(a){var b=1,c=T(a,"opacity");c&&(b=Number(c));(a=S(a))&&(b*=Sa(a));return b};function Ta(a,b){function c(e){if(P(e)&&("none"==T(e,"display")||"hidden"==T(e,"content-visibility")))return!1;var d;if((d=e.parentNode)&&d.shadowRoot&&void 0!==e.assignedSlot)d=e.assignedSlot?e.assignedSlot.parentNode:null;else if(e.getDestinationInsertionPoints){var f=e.getDestinationInsertionPoints();0<f.length&&(d=f[f.length-1])}if(La&&d instanceof ShadowRoot){if(d.host.shadowRoot&&d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&P(d,"DETAILS")&&!d.open&&!P(e,
|
28
|
+
"SUMMARY")?!1:!!d&&c(d):!0}return U(a,!!b,c)}var X=["se_exportedFunctionSymbol"],Y=g;X[0]in Y||"undefined"==typeof Y.execScript||Y.execScript("var "+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===Ta?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=Ta;; return this.se_exportedFunctionSymbol.apply(null,arguments);}).apply(window, arguments);}
|
@@ -122,10 +122,14 @@ module Selenium
|
|
122
122
|
|
123
123
|
def terminate(pid)
|
124
124
|
Process.kill(SIGTERM, pid)
|
125
|
+
rescue Errno::ECHILD, Errno::ESRCH
|
126
|
+
# Process does not exist, nothing to terminate
|
125
127
|
end
|
126
128
|
|
127
129
|
def kill(pid)
|
128
130
|
Process.kill(SIGKILL, pid)
|
131
|
+
rescue Errno::ECHILD, Errno::ESRCH
|
132
|
+
# Process does not exist, nothing to kill
|
129
133
|
end
|
130
134
|
|
131
135
|
def waitpid2(pid, flags = 0)
|
@@ -39,7 +39,13 @@ module Selenium
|
|
39
39
|
|
40
40
|
begin
|
41
41
|
Zip::File.open("#{file_name}.zip") do |zip|
|
42
|
-
zip.each
|
42
|
+
zip.each do |entry|
|
43
|
+
if Zipper::RUBYZIP_V3
|
44
|
+
zip.extract(entry, file_name, destination_directory: target_directory)
|
45
|
+
else
|
46
|
+
zip.extract(entry, "#{target_directory}#{file_name}")
|
47
|
+
end
|
48
|
+
end
|
43
49
|
end
|
44
50
|
ensure
|
45
51
|
FileUtils.rm_f("#{file_name}.zip")
|
@@ -75,6 +75,13 @@ module Selenium
|
|
75
75
|
subtract: "\ue027",
|
76
76
|
decimal: "\ue028",
|
77
77
|
divide: "\ue029",
|
78
|
+
numpad_multiply: "\ue024",
|
79
|
+
numpad_add: "\ue025",
|
80
|
+
numpad_comma: "\ue026",
|
81
|
+
numpad_subtract: "\ue027",
|
82
|
+
numpad_decimal: "\ue028",
|
83
|
+
numpad_divide: "\ue029",
|
84
|
+
numpad_enter: "\ue007",
|
78
85
|
f1: "\ue031",
|
79
86
|
f2: "\ue032",
|
80
87
|
f3: "\ue033",
|
@@ -95,6 +102,8 @@ module Selenium
|
|
95
102
|
right_control: "\ue051",
|
96
103
|
right_alt: "\ue052",
|
97
104
|
right_meta: "\ue053",
|
105
|
+
options: "\ue052",
|
106
|
+
function: "\ue051", # macOS Function key, same as right_control
|
98
107
|
numpad_page_up: "\ue054",
|
99
108
|
numpad_page_down: "\ue055",
|
100
109
|
numpad_end: "\ue056",
|
@@ -29,7 +29,7 @@ module Selenium
|
|
29
29
|
# @param [Hash] opts Options for this instance
|
30
30
|
# @option opts [Numeric] :timeout (5) Seconds to wait before timing out.
|
31
31
|
# @option opts [Numeric] :interval (0.2) Seconds to sleep between polls.
|
32
|
-
# @option opts [String] :message Exception
|
32
|
+
# @option opts [String] :message Exception message if timed out.
|
33
33
|
# @option opts [Array, Exception] :ignore Exceptions to ignore while polling (default: Error::NoSuchElementError)
|
34
34
|
#
|
35
35
|
|
@@ -18,6 +18,7 @@
|
|
18
18
|
# under the License.
|
19
19
|
|
20
20
|
require 'zip'
|
21
|
+
require 'zip/version' # Not required automatically
|
21
22
|
require 'tempfile'
|
22
23
|
require 'find'
|
23
24
|
require 'base64'
|
@@ -30,6 +31,7 @@ module Selenium
|
|
30
31
|
|
31
32
|
module Zipper
|
32
33
|
EXTENSIONS = %w[.zip .xpi].freeze
|
34
|
+
RUBYZIP_V3 = Zip::VERSION >= '3.0.0'
|
33
35
|
|
34
36
|
class << self
|
35
37
|
def unzip(path)
|
@@ -42,7 +44,11 @@ module Selenium
|
|
42
44
|
dirname = File.dirname(to)
|
43
45
|
|
44
46
|
FileUtils.mkdir_p dirname
|
45
|
-
|
47
|
+
if RUBYZIP_V3
|
48
|
+
zip.extract(entry, entry.name, destination_directory: destination)
|
49
|
+
else
|
50
|
+
zip.extract(entry, to)
|
51
|
+
end
|
46
52
|
end
|
47
53
|
end
|
48
54
|
|
@@ -75,7 +81,11 @@ module Selenium
|
|
75
81
|
# Don't use Tempfile since it lacks rb_file_s_rename permission on Windows.
|
76
82
|
Dir.mktmpdir do |tmp_dir|
|
77
83
|
zip_path = File.join(tmp_dir, 'webdriver-zip')
|
78
|
-
|
84
|
+
if RUBYZIP_V3
|
85
|
+
Zip::File.open(zip_path, create: true, &blk)
|
86
|
+
else
|
87
|
+
Zip::File.open(zip_path, Zip::File::CREATE, &blk)
|
88
|
+
end
|
79
89
|
end
|
80
90
|
end
|
81
91
|
|
data/selenium-webdriver.gemspec
CHANGED
@@ -52,7 +52,7 @@ Gem::Specification.new do |s|
|
|
52
52
|
s.add_dependency 'base64', ['~> 0.2']
|
53
53
|
s.add_dependency 'logger', ['~> 1.4']
|
54
54
|
s.add_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
|
55
|
-
s.add_dependency 'rubyzip', ['>= 1.2.2', '<
|
55
|
+
s.add_dependency 'rubyzip', ['>= 1.2.2', '< 4.0']
|
56
56
|
s.add_dependency 'websocket', ['~> 1.0']
|
57
57
|
|
58
58
|
s.add_development_dependency 'git', ['~> 1.19']
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2025-
|
13
|
+
date: 2025-08-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: base64
|
@@ -69,7 +69,7 @@ dependencies:
|
|
69
69
|
version: 1.2.2
|
70
70
|
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
72
|
+
version: '4.0'
|
73
73
|
type: :runtime
|
74
74
|
prerelease: false
|
75
75
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -79,7 +79,7 @@ dependencies:
|
|
79
79
|
version: 1.2.2
|
80
80
|
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '4.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: websocket
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|