selenium-webdriver 4.28.1 → 4.30.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.
- package/CHANGES.md +16 -2
- package/bidi/browser.js +17 -0
- package/bidi/clientWindowInfo.js +54 -0
- package/bidi/external/permissions.js +73 -0
- package/bidi/network.js +40 -1
- package/bin/linux/selenium-manager +0 -0
- package/bin/macos/selenium-manager +0 -0
- package/bin/windows/selenium-manager.exe +0 -0
- package/lib/atoms/find-elements.js +1 -1
- package/lib/atoms/get-attribute.js +1 -1
- package/lib/atoms/is-displayed.js +1 -1
- package/lib/network.js +2 -2
- package/lib/webdriver.js +2 -8
- package/package.json +1 -1
package/CHANGES.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
## 4.30.0
|
|
2
|
+
|
|
3
|
+
- [bidi] fix chrome and firefox test for CI RBE (#15405)
|
|
4
|
+
- [cdp] add support for 134 and remove 131
|
|
5
|
+
- [cdp] remove support for v85 since no longer required by Firefox
|
|
6
|
+
- [bidi] implement permissions module commands in JS (#15304)
|
|
7
|
+
|
|
8
|
+
## 4.29.0
|
|
9
|
+
|
|
10
|
+
- Add CDP for Chrome 133 and remove 130
|
|
11
|
+
- [js] Remove Firefox CDP (#15200)
|
|
12
|
+
- [js][bidi] Implement bidi `setCacheBehavior` command (#15136)
|
|
13
|
+
- [js][bidi] Implement bidi getClientWindows command in browser module (#15248)
|
|
14
|
+
|
|
1
15
|
## 4.28.1
|
|
2
|
-
|
|
3
|
-
|
|
16
|
+
|
|
17
|
+
- [JS] specify min required node versiton to 18.20.5
|
|
4
18
|
|
|
5
19
|
## 4.28.0
|
|
6
20
|
|
package/bidi/browser.js
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
// specific language governing permissions and limitations
|
|
16
16
|
// under the License.
|
|
17
17
|
|
|
18
|
+
const { WindowState, ClientWindowInfo } = require('./clientWindowInfo')
|
|
19
|
+
|
|
18
20
|
/**
|
|
19
21
|
* Represents the commands and events under Browser Module.
|
|
20
22
|
* Described in https://w3c.github.io/webdriver-bidi/#module-browser
|
|
@@ -83,6 +85,20 @@ class Browser {
|
|
|
83
85
|
|
|
84
86
|
await this.bidi.send(command)
|
|
85
87
|
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Gets information about all client windows.
|
|
91
|
+
* @returns {Promise<ClientWindowInfo[]>} Array of client window information
|
|
92
|
+
*/
|
|
93
|
+
async getClientWindows() {
|
|
94
|
+
const command = {
|
|
95
|
+
method: 'browser.getClientWindows',
|
|
96
|
+
params: {},
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const response = await this.bidi.send(command)
|
|
100
|
+
return response.result.clientWindows.map((window) => ClientWindowInfo.fromJson(window))
|
|
101
|
+
}
|
|
86
102
|
}
|
|
87
103
|
|
|
88
104
|
async function getBrowserInstance(driver) {
|
|
@@ -92,3 +108,4 @@ async function getBrowserInstance(driver) {
|
|
|
92
108
|
}
|
|
93
109
|
|
|
94
110
|
module.exports = getBrowserInstance
|
|
111
|
+
module.exports.WindowState = WindowState
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
// or more contributor license agreements. See the NOTICE file
|
|
3
|
+
// distributed with this work for additional information
|
|
4
|
+
// regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
// to you under the Apache License, Version 2.0 (the
|
|
6
|
+
// "License"); you may not use this file except in compliance
|
|
7
|
+
// with the License. You may obtain a copy of the License at
|
|
8
|
+
//
|
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
//
|
|
11
|
+
// Unless required by applicable law or agreed to in writing,
|
|
12
|
+
// software distributed under the License is distributed on an
|
|
13
|
+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
// KIND, either express or implied. See the License for the
|
|
15
|
+
// specific language governing permissions and limitations
|
|
16
|
+
// under the License.
|
|
17
|
+
|
|
18
|
+
const WindowState = Object.freeze({
|
|
19
|
+
FULLSCREEN: 'fullscreen',
|
|
20
|
+
MAXIMIZED: 'maximized',
|
|
21
|
+
MINIMIZED: 'minimized',
|
|
22
|
+
NORMAL: 'normal',
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
class ClientWindowInfo {
|
|
26
|
+
/**
|
|
27
|
+
* @param {Object} params Window information parameters
|
|
28
|
+
* @param {string} params.clientWindow Window identifier
|
|
29
|
+
* @param {string} params.state Window state from WindowState
|
|
30
|
+
* @param {number} params.width Window width
|
|
31
|
+
* @param {number} params.height Window height
|
|
32
|
+
* @param {number} params.x Window x coordinate
|
|
33
|
+
* @param {number} params.y Window y coordinate
|
|
34
|
+
* @param {boolean} params.active Whether window is active and can receive keyboard input
|
|
35
|
+
*/
|
|
36
|
+
constructor({ clientWindow, state, width, height, x, y, active }) {
|
|
37
|
+
this.clientWindow = clientWindow
|
|
38
|
+
this.state = state
|
|
39
|
+
this.width = width
|
|
40
|
+
this.height = height
|
|
41
|
+
this.x = x
|
|
42
|
+
this.y = y
|
|
43
|
+
this.active = active
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static fromJson(json) {
|
|
47
|
+
return new ClientWindowInfo({
|
|
48
|
+
...json,
|
|
49
|
+
state: json.state.toLowerCase(),
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = { WindowState, ClientWindowInfo }
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
// or more contributor license agreements. See the NOTICE file
|
|
3
|
+
// distributed with this work for additional information
|
|
4
|
+
// regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
// to you under the Apache License, Version 2.0 (the
|
|
6
|
+
// "License"); you may not use this file except in compliance
|
|
7
|
+
// with the License. You may obtain a copy of the License at
|
|
8
|
+
//
|
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
//
|
|
11
|
+
// Unless required by applicable law or agreed to in writing,
|
|
12
|
+
// software distributed under the License is distributed on an
|
|
13
|
+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
// KIND, either express or implied. See the License for the
|
|
15
|
+
// specific language governing permissions and limitations
|
|
16
|
+
// under the License.
|
|
17
|
+
|
|
18
|
+
const PermissionState = Object.freeze({
|
|
19
|
+
GRANTED: 'granted',
|
|
20
|
+
DENIED: 'denied',
|
|
21
|
+
PROMPT: 'prompt',
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
class Permission {
|
|
25
|
+
constructor(driver) {
|
|
26
|
+
this._driver = driver
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async init() {
|
|
30
|
+
if (!(await this._driver.getCapabilities()).get('webSocketUrl')) {
|
|
31
|
+
throw Error('WebDriver instance must support BiDi protocol')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
this.bidi = await this._driver.getBidi()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Sets a permission state for a given permission descriptor.
|
|
39
|
+
* @param {Object} permissionDescriptor The permission descriptor.
|
|
40
|
+
* @param {string} state The permission state (granted, denied, prompt).
|
|
41
|
+
* @param {string} origin The origin for which the permission is set.
|
|
42
|
+
* @param {string} [userContext] The user context id (optional).
|
|
43
|
+
* @returns {Promise<void>}
|
|
44
|
+
*/
|
|
45
|
+
async setPermission(permissionDescriptor, state, origin, userContext = null) {
|
|
46
|
+
if (!Object.values(PermissionState).includes(state)) {
|
|
47
|
+
throw new Error(`Invalid permission state. Must be one of: ${Object.values(PermissionState).join(', ')}`)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const command = {
|
|
51
|
+
method: 'permissions.setPermission',
|
|
52
|
+
params: {
|
|
53
|
+
descriptor: permissionDescriptor,
|
|
54
|
+
state: state,
|
|
55
|
+
origin: origin,
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (userContext) {
|
|
60
|
+
command.params.userContext = userContext
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
await this.bidi.send(command)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async function getPermissionInstance(driver) {
|
|
68
|
+
let instance = new Permission(driver)
|
|
69
|
+
await instance.init()
|
|
70
|
+
return instance
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
module.exports = { getPermissionInstance, PermissionState }
|
package/bidi/network.js
CHANGED
|
@@ -29,6 +29,11 @@ const NetworkEvent = {
|
|
|
29
29
|
FETCH_ERROR: 'network.fetchError',
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
const CacheBehavior = Object.freeze({
|
|
33
|
+
DEFAULT: 'default',
|
|
34
|
+
BYPASS: 'bypass',
|
|
35
|
+
})
|
|
36
|
+
|
|
32
37
|
/**
|
|
33
38
|
* Represents all commands and events of Network module.
|
|
34
39
|
* Described in https://w3c.github.io/webdriver-bidi/#module-network.
|
|
@@ -355,6 +360,40 @@ class Network {
|
|
|
355
360
|
await this.bidi.send(command)
|
|
356
361
|
}
|
|
357
362
|
|
|
363
|
+
/**
|
|
364
|
+
* Sets the cache behavior for network requests.
|
|
365
|
+
*
|
|
366
|
+
* @param {string} behavior - The cache behavior ("default" or "bypass")
|
|
367
|
+
* @param {Array<string>} [contexts] - Optional array of browsing context IDs
|
|
368
|
+
* @returns {Promise<void>} A promise that resolves when the cache behavior is set
|
|
369
|
+
* @throws {Error} If behavior is invalid or context IDs are invalid
|
|
370
|
+
*/
|
|
371
|
+
async setCacheBehavior(behavior, contexts = null) {
|
|
372
|
+
if (!Object.values(CacheBehavior).includes(behavior)) {
|
|
373
|
+
throw new Error(`Cache behavior must be either "${CacheBehavior.DEFAULT}" or "${CacheBehavior.BYPASS}"`)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const command = {
|
|
377
|
+
method: 'network.setCacheBehavior',
|
|
378
|
+
params: {
|
|
379
|
+
cacheBehavior: behavior,
|
|
380
|
+
},
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (contexts !== null) {
|
|
384
|
+
if (
|
|
385
|
+
!Array.isArray(contexts) ||
|
|
386
|
+
contexts.length === 0 ||
|
|
387
|
+
contexts.some((c) => typeof c !== 'string' || c.trim() === '')
|
|
388
|
+
) {
|
|
389
|
+
throw new Error('Contexts must be an array of non-empty strings')
|
|
390
|
+
}
|
|
391
|
+
command.params.contexts = contexts
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
await this.bidi.send(command)
|
|
395
|
+
}
|
|
396
|
+
|
|
358
397
|
/**
|
|
359
398
|
* Unsubscribes from network events for all browsing contexts.
|
|
360
399
|
* @returns {Promise<void>} A promise that resolves when the network connection is closed.
|
|
@@ -389,4 +428,4 @@ async function getNetworkInstance(driver, browsingContextIds = null) {
|
|
|
389
428
|
return instance
|
|
390
429
|
}
|
|
391
430
|
|
|
392
|
-
module.exports = getNetworkInstance
|
|
431
|
+
module.exports = { Network: getNetworkInstance, CacheBehavior }
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -122,4 +122,4 @@ Z.u=function(a,b,c){var d=A(a);if(!d.documentElement)return null;(t||Hc)&&Ac(d?d
|
|
|
122
122
|
null}}try{return d.evaluate(b,a,e,c,null)}catch(n){if("TypeError"===n.name)return e=d.createNSResolver?d.createNSResolver(d.documentElement):Z.I,d.evaluate(b,a,e,c,null);throw n;}}catch(n){if(!Na||"NS_ERROR_ILLEGAL_VALUE"!=n.name)throw new P(32,"Unable to locate an element with the xpath expression "+b+" because of the following error:\n"+n);}};Z.J=function(a,b){if(!a||1!=a.nodeType)throw new P(32,'The result of the xpath expression "'+b+'" is: '+a+". It should be an element.");};
|
|
123
123
|
Z.s=function(a,b){var c=function(){var d=Z.u(b,a,9);return d?d.singleNodeValue||null:b.selectSingleNode?(d=A(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectSingleNode(a)):null}();null===c||Z.J(c,a);return c};
|
|
124
124
|
Z.j=function(a,b){var c=function(){var d=Z.u(b,a,7);if(d){for(var e=d.snapshotLength,f=[],g=0;g<e;++g)f.push(d.snapshotItem(g));return f}return b.selectNodes?(d=A(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectNodes(a)):[]}();l(c,function(d){Z.J(d,a)});return c};var td={className:Dc,"class name":Dc,css:Nc,"css selector":Nc,relative:Y,id:qd,linkText:X,"link text":X,name:{s:function(a,b){b=mb(eb(b),"*",null,b);return ua(b,function(c){return Uc(c,"name")==a})},j:function(a,b){b=mb(eb(b),"*",null,b);return pa(b,function(c){return Uc(c,"name")==a})}},partialLinkText:rd,"partial link text":rd,tagName:vd,"tag name":vd,xpath:Z};function sd(a){for(var b in a)if(a.hasOwnProperty(b))return b;return null}
|
|
125
|
-
function ud(a,b){var c=sd(a);if(c){var d=td[c];if(d&&ea(d.j))return d.j(a[c],b||Bc.document)}throw new P(61,"Unsupported locator strategy: "+c);};ca("
|
|
125
|
+
function ud(a,b){var c=sd(a);if(c){var d=td[c];if(d&&ea(d.j))return d.j(a[c],b||Bc.document)}throw new P(61,"Unsupported locator strategy: "+c);};ca("se_exportedFunctionSymbol",ud);; return this.se_exportedFunctionSymbol.apply(null,arguments);}).apply(window, arguments);};
|
|
@@ -4,4 +4,4 @@ m[51]="invalid selector";m[52]="invalid selector";m[17]="javascript error";m[405
|
|
|
4
4
|
a:{var F="",G=function(){var a=p;if(B)return/rv:([^\);]+)(\)|;)/.exec(a);if(A)return/Edge\/([\d\.]+)/.exec(a);if(z)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(C)return/WebKit\/(\S+)/.exec(a);if(y)return/(?:Version)[ \/]?(\S+)/.exec(a)}();G&&(F=G?G[1]:"");if(z){var H=D();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var I;I=d.document&&z?D():void 0;var J=u(),K=w()||t("iPod"),L=t("iPad"),M=t("Android")&&!(v()||u()||t("Opera")||t("Silk")),N=v(),aa=t("Safari")&&!(v()||t("Coast")||t("Opera")||t("Edge")||t("Edg/")||t("OPR")||u()||t("Silk")||t("Android"))&&!(w()||t("iPad")||t("iPod"));function O(a){return(a=a.exec(p))?a[1]:""}(function(){if(J)return O(/Firefox\/([0-9.]+)/);if(z||A||y)return E;if(N)return w()||t("iPad")||t("iPod")?O(/CriOS\/([0-9.]+)/):O(/Chrome\/([0-9.]+)/);if(aa&&!(w()||t("iPad")||t("iPod")))return O(/Version\/([0-9.]+)/);if(K||L){var a=/Version\/(\S+).*Mobile\/(\S+)/.exec(p);if(a)return a[1]+"."+a[2]}else if(M)return(a=O(/Android\s+([0-9.]+)/))?a:O(/Version\/([0-9.]+)/);return""})();var P=z&&!(8<=Number(I)),ba=z&&!(9<=Number(I));var ca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Q={IMG:" ",BR:"\n"};function R(a,b,c){if(!(a.nodeName in ca))if(3==a.nodeType)c?b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):b.push(a.nodeValue);else if(a.nodeName in Q)b.push(Q[a.nodeName]);else for(a=a.firstChild;a;)R(a,b,c),a=a.nextSibling};function S(a,b){b=b.toLowerCase();return"style"==b?da(a.style.cssText):P&&"value"==b&&T(a,"INPUT")?a.value:ba&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ea=/[;]+(?=(?:(?:[^"]*"){2})*[^"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\([^()]*\))*[^()]*$)/;
|
|
5
5
|
function da(a){var b=[];k(a.split(ea),function(c){var e=c.indexOf(":");0<e&&(c=[c.slice(0,e),c.slice(e+1)],2==c.length&&b.push(c[0].toLowerCase(),":",c[1],";"))});b=b.join("");return b=";"==b.charAt(b.length-1)?b:b+";"}function U(a,b){P&&"value"==b&&T(a,"OPTION")&&null===S(a,"value")?(b=[],R(a,b,!1),a=b.join("")):a=a[b];return a}
|
|
6
6
|
function T(a,b){b&&"string"!==typeof b&&(b=b.toString());return a instanceof HTMLFormElement?!!a&&1==a.nodeType&&(!b||"FORM"==b):!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}function V(a){return T(a,"OPTION")?!0:T(a,"INPUT")?(a=a.type.toLowerCase(),"checkbox"==a||"radio"==a):!1};var fa={"class":"className",readonly:"readOnly"},ha="allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate".split(" ");function W(a,b){var c=null,e=b.toLowerCase();if("style"==e)return(c=a.style)&&"string"!=typeof c&&(c=c.cssText),c;if(("selected"==e||"checked"==e)&&V(a)){if(!V(a))throw new l(15,"Element is not selectable");b="selected";c=a.type&&a.type.toLowerCase();if("checkbox"==c||"radio"==c)b="checked";return U(a,b)?"true":null}var g=T(a,"A");if(T(a,"IMG")&&"src"==e||g&&"href"==e)return(c=S(a,e))&&(c=U(a,e)),c;if("spellcheck"==e){c=S(a,e);if(null!==c){if("false"==c.toLowerCase())return"false";if("true"==c.toLowerCase())return"true"}return U(a,
|
|
7
|
-
e)+""}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?"true":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e="object"==e&&null!=x||"function"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=["
|
|
7
|
+
e)+""}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?"true":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e="object"==e&&null!=x||"function"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=["se_exportedFunctionSymbol"],Y=d;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===W?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=W;; return this.se_exportedFunctionSymbol.apply(null,arguments);}).apply(window, arguments);};
|
|
@@ -26,4 +26,4 @@ function Oa(a){var b=P(a,"MAP");if(!b&&!P(a,"AREA"))return null;var c=b?a:P(a.pa
|
|
|
26
26
|
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)}}
|
|
27
27
|
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)}
|
|
28
28
|
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,"SUMMARY")?!1:!!d&&c(d):!0}return U(a,
|
|
29
|
-
!!b,c)}var X=["
|
|
29
|
+
!!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);};
|
package/lib/network.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// specific language governing permissions and limitations
|
|
16
16
|
// under the License.
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const { Network: getNetwork } = require('../bidi/network')
|
|
19
19
|
const { InterceptPhase } = require('../bidi/interceptPhase')
|
|
20
20
|
const { AddInterceptParameters } = require('../bidi/addInterceptParameters')
|
|
21
21
|
|
|
@@ -39,7 +39,7 @@ class Network {
|
|
|
39
39
|
if (this.#network !== undefined) {
|
|
40
40
|
return
|
|
41
41
|
}
|
|
42
|
-
this.#network = await
|
|
42
|
+
this.#network = await getNetwork(this.#driver)
|
|
43
43
|
|
|
44
44
|
await this.#network.addIntercept(new AddInterceptParameters(InterceptPhase.AUTH_REQUIRED))
|
|
45
45
|
|
package/lib/webdriver.js
CHANGED
|
@@ -1244,9 +1244,7 @@ class WebDriver {
|
|
|
1244
1244
|
const caps = await this.getCapabilities()
|
|
1245
1245
|
|
|
1246
1246
|
if (caps['map_'].get('browserName') === 'firefox') {
|
|
1247
|
-
|
|
1248
|
-
'CDP support for Firefox is deprecated and will be removed in future versions. Please switch to WebDriver BiDi.',
|
|
1249
|
-
)
|
|
1247
|
+
throw new Error('CDP support for Firefox is removed. Please switch to WebDriver BiDi.')
|
|
1250
1248
|
}
|
|
1251
1249
|
|
|
1252
1250
|
if (process.env.SELENIUM_REMOTE_URL) {
|
|
@@ -1255,11 +1253,7 @@ class WebDriver {
|
|
|
1255
1253
|
debuggerUrl = `ws://${host}/session/${sessionId}/se/cdp`
|
|
1256
1254
|
} else {
|
|
1257
1255
|
const seCdp = caps['map_'].get('se:cdp')
|
|
1258
|
-
const vendorInfo =
|
|
1259
|
-
caps['map_'].get('goog:chromeOptions') ||
|
|
1260
|
-
caps['map_'].get('ms:edgeOptions') ||
|
|
1261
|
-
caps['map_'].get('moz:debuggerAddress') ||
|
|
1262
|
-
new Map()
|
|
1256
|
+
const vendorInfo = caps['map_'].get('goog:chromeOptions') || caps['map_'].get('ms:edgeOptions') || new Map()
|
|
1263
1257
|
debuggerUrl = seCdp || vendorInfo['debuggerAddress'] || vendorInfo
|
|
1264
1258
|
}
|
|
1265
1259
|
this._wsUrl = await this.getWsUrl(debuggerUrl, target, caps)
|