Skip to content

Commit 2f54a8a

Browse files
committed
Merge remote-tracking branch 'origin/trunk' into release-preparation-4.27.0
Signed-off-by: Viet Nguyen Duc <[email protected]>
2 parents 5905f70 + e2e9ac5 commit 2f54a8a

File tree

17 files changed

+152
-79
lines changed

17 files changed

+152
-79
lines changed

.github/workflows/ci-python.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ jobs:
100100
fail-fast: false
101101
matrix:
102102
include:
103-
- browser: safari
104-
os: macos
105103
- browser: chrome
106104
os: ubuntu
107105
- browser: edge
@@ -116,3 +114,21 @@ jobs:
116114
run: |
117115
bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:common-${{ matrix.browser }}-bidi
118116
bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-${{ matrix.browser }}
117+
118+
safari-tests:
119+
name: Browser Tests
120+
needs: build
121+
uses: ./.github/workflows/bazel.yml
122+
strategy:
123+
fail-fast: false
124+
matrix:
125+
include:
126+
- browser: safari
127+
os: macos
128+
with:
129+
name: Integration Tests (${{ matrix.browser }}, ${{ matrix.os }})
130+
browser: ${{ matrix.browser }}
131+
os: ${{ matrix.os }}
132+
cache-key: py-browser-${{ matrix.browser }}
133+
run: |
134+
bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-${{ matrix.browser }}

java/CHANGELOG

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
v4.27.0
22
======
33
* Add CDP for Chrome 131 and remove 128
4+
* Add Firefox CDP deprecation warnings
45
* Throw Error When Using Unsupported Linux ARM (#14616)
56
* Enhance error message for NoSuchElementException and return unmodifiable set for pinned scripts (#14707)
67
* Fix SpotBugs bugs in the Selenium manager (#14608)
@@ -12,7 +13,7 @@ v4.27.0
1213
* Remove toml parser warning (#14711)
1314
* Simplify reading http headers
1415
* Mark WebElement.getAttribute deprecated (#14666)
15-
* Add Firefox CDP deprecation warnings
16+
* Search windows by name without recursion (#14782)
1617
* [bidi] Add network request handler APIs (#14424)
1718
* [bidi] Fix the mode "closed" for a node
1819
* [grid] TomlConfig: migrate TOML library to tomlj/tomlj (#14470)

java/src/org/openqa/selenium/remote/RemoteWebDriver.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,12 +1148,16 @@ public WebDriver window(String windowHandleOrName) {
11481148
// simulate search by name
11491149
String original = getWindowHandle();
11501150
for (String handle : getWindowHandles()) {
1151-
switchTo().window(handle);
1152-
if (windowHandleOrName.equals(executeScript("return window.name"))) {
1153-
return RemoteWebDriver.this; // found by name
1151+
try {
1152+
execute(DriverCommand.SWITCH_TO_WINDOW(handle));
1153+
if (windowHandleOrName.equals(executeScript("return window.name"))) {
1154+
return RemoteWebDriver.this; // found by name
1155+
}
1156+
} catch (NoSuchWindowException nswe) {
1157+
// swallow
11541158
}
11551159
}
1156-
switchTo().window(original);
1160+
execute(DriverCommand.SWITCH_TO_WINDOW(original));
11571161
throw nsw;
11581162
}
11591163
}

py/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ BROWSER_VERSIONS = [
7474
TEST_DEPS = [
7575
requirement("attrs"),
7676
requirement("debugpy"),
77+
requirement("filetype"),
7778
requirement("idna"),
7879
requirement("iniconfig"),
7980
requirement("importlib_metadata"),

py/CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Selenium 4.27.0
22
* Add CDP for Chrome 131 and remove 128
3+
* Add Firefox CDP deprecation warnings (#14787)
34
* Cleaned up Py doc sphinx warnings/errors and added README (#14191)
45
* Added Deprecation of WebElement.get_attribute() per #13334 (#14675)
56
* Fix TypeError when init Safari webdriver (#14699)

py/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ attrs==23.2.0
33
certifi==2023.11.17
44
cffi==1.16.0
55
cryptography==42.0.8
6+
secretstorage==3.3.3
67
debugpy==1.8.7
8+
filetype==1.2.0
79
h11==0.14.0
810
idna==3.7
911
importlib-metadata==6.8.0

py/requirements_lock.txt

Lines changed: 66 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -172,66 +172,70 @@ charset-normalizer==3.3.2 \
172172
--hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \
173173
--hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561
174174
# via requests
175-
cryptography==42.0.7 \
176-
--hash=sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55 \
177-
--hash=sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785 \
178-
--hash=sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b \
179-
--hash=sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886 \
180-
--hash=sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82 \
181-
--hash=sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1 \
182-
--hash=sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda \
183-
--hash=sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f \
184-
--hash=sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68 \
185-
--hash=sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60 \
186-
--hash=sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7 \
187-
--hash=sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd \
188-
--hash=sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582 \
189-
--hash=sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc \
190-
--hash=sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858 \
191-
--hash=sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b \
192-
--hash=sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2 \
193-
--hash=sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678 \
194-
--hash=sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13 \
195-
--hash=sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4 \
196-
--hash=sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8 \
197-
--hash=sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604 \
198-
--hash=sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477 \
199-
--hash=sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e \
200-
--hash=sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a \
201-
--hash=sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9 \
202-
--hash=sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14 \
203-
--hash=sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda \
204-
--hash=sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da \
205-
--hash=sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562 \
206-
--hash=sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2 \
207-
--hash=sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9
175+
cryptography==42.0.8 \
176+
--hash=sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad \
177+
--hash=sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583 \
178+
--hash=sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b \
179+
--hash=sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c \
180+
--hash=sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1 \
181+
--hash=sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648 \
182+
--hash=sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949 \
183+
--hash=sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba \
184+
--hash=sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c \
185+
--hash=sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9 \
186+
--hash=sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d \
187+
--hash=sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c \
188+
--hash=sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e \
189+
--hash=sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2 \
190+
--hash=sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d \
191+
--hash=sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7 \
192+
--hash=sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70 \
193+
--hash=sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2 \
194+
--hash=sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7 \
195+
--hash=sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14 \
196+
--hash=sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe \
197+
--hash=sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e \
198+
--hash=sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71 \
199+
--hash=sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961 \
200+
--hash=sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7 \
201+
--hash=sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c \
202+
--hash=sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28 \
203+
--hash=sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842 \
204+
--hash=sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902 \
205+
--hash=sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801 \
206+
--hash=sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a \
207+
--hash=sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e
208208
# via
209209
# -r py/requirements.txt
210210
# pyopenssl
211211
# secretstorage
212-
debugpy==1.8.1 \
213-
--hash=sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb \
214-
--hash=sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146 \
215-
--hash=sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8 \
216-
--hash=sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242 \
217-
--hash=sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0 \
218-
--hash=sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741 \
219-
--hash=sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539 \
220-
--hash=sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23 \
221-
--hash=sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3 \
222-
--hash=sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39 \
223-
--hash=sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd \
224-
--hash=sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9 \
225-
--hash=sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace \
226-
--hash=sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42 \
227-
--hash=sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0 \
228-
--hash=sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7 \
229-
--hash=sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e \
230-
--hash=sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234 \
231-
--hash=sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98 \
232-
--hash=sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703 \
233-
--hash=sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42 \
234-
--hash=sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099
212+
debugpy==1.8.7 \
213+
--hash=sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba \
214+
--hash=sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2 \
215+
--hash=sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e \
216+
--hash=sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037 \
217+
--hash=sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa \
218+
--hash=sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca \
219+
--hash=sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39 \
220+
--hash=sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7 \
221+
--hash=sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706 \
222+
--hash=sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae \
223+
--hash=sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9 \
224+
--hash=sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d \
225+
--hash=sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211 \
226+
--hash=sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2 \
227+
--hash=sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55 \
228+
--hash=sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907 \
229+
--hash=sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596 \
230+
--hash=sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b \
231+
--hash=sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda \
232+
--hash=sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c \
233+
--hash=sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81 \
234+
--hash=sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f \
235+
--hash=sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0 \
236+
--hash=sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40 \
237+
--hash=sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9 \
238+
--hash=sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7
235239
# via -r py/requirements.txt
236240
docutils==0.20.1 \
237241
--hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \
@@ -243,6 +247,10 @@ exceptiongroup==1.1.1 \
243247
# via
244248
# pytest
245249
# trio
250+
filetype==1.2.0 \
251+
--hash=sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb \
252+
--hash=sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25
253+
# via -r py/requirements.txt
246254
h11==0.14.0 \
247255
--hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \
248256
--hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761
@@ -284,9 +292,7 @@ jaraco-classes==3.3.0 \
284292
jeepney==0.8.0 \
285293
--hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \
286294
--hash=sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755
287-
# via
288-
# keyring
289-
# secretstorage
295+
# via secretstorage
290296
keyring==24.3.0 \
291297
--hash=sha256:4446d35d636e6a10b8bce7caa66913dd9eca5fd222ca03a3d42c38608ac30836 \
292298
--hash=sha256:e730ecffd309658a08ee82535a3b5ec4b4c8669a9be11efb66249d8e0aeb9a25
@@ -514,7 +520,7 @@ rich==13.7.0 \
514520
secretstorage==3.3.3 \
515521
--hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \
516522
--hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99
517-
# via keyring
523+
# via -r py/requirements.txt
518524
sniffio==1.3.1 \
519525
--hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \
520526
--hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc

py/selenium/webdriver/remote/webdriver.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,12 @@ def start_devtools(self):
10571057
raise WebDriverException("Unable to find url to connect to from capabilities")
10581058

10591059
devtools = cdp.import_devtools(version)
1060+
if self.caps["browserName"].lower() == "firefox":
1061+
warnings.warn(
1062+
"CDP support for Firefox is deprecated and will be removed in future versions. Please switch to WebDriver BiDi.",
1063+
DeprecationWarning,
1064+
stacklevel=2,
1065+
)
10601066
self._websocket_connection = WebSocketConnection(ws_url)
10611067
targets = self._websocket_connection.execute(devtools.target.get_targets())
10621068
target_id = targets[0].target_id

py/test/selenium/webdriver/common/devtools_tests.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,18 @@
2121

2222
@pytest.mark.xfail_safari
2323
def test_check_console_messages(driver, pages):
24-
devtools, connection = driver.start_devtools()
24+
with pytest.warns(None) as record:
25+
devtools, connection = driver.start_devtools()
2526
console_api_calls = []
2627

28+
if driver.caps["browserName"].lower() == "firefox":
29+
assert (
30+
record[0].message.args[0]
31+
== "CDP support for Firefox is deprecated and will be removed in future versions. Please switch to WebDriver BiDi."
32+
)
33+
else:
34+
assert len(record) == 0
35+
2736
connection.execute(devtools.runtime.enable())
2837
connection.on(devtools.runtime.ConsoleAPICalled, console_api_calls.append)
2938
driver.execute_script("console.log('I love cheese')")

py/test/selenium/webdriver/common/takes_screenshots_tests.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
# under the License.
1717

1818
import base64
19-
import imghdr
2019

20+
import filetype
2121
import pytest
2222

2323
from selenium.webdriver.common.by import By
@@ -26,13 +26,15 @@
2626
def test_get_screenshot_as_base64(driver, pages):
2727
pages.load("simpleTest.html")
2828
result = base64.b64decode(driver.get_screenshot_as_base64())
29-
assert imghdr.what("", result) == "png"
29+
kind = filetype.guess(result)
30+
assert kind is not None and kind.mime == "image/png"
3031

3132

3233
def test_get_screenshot_as_png(driver, pages):
3334
pages.load("simpleTest.html")
3435
result = driver.get_screenshot_as_png()
35-
assert imghdr.what("", result) == "png"
36+
kind = filetype.guess(result)
37+
assert kind is not None and kind.mime == "image/png"
3638

3739

3840
@pytest.mark.xfail_firefox
@@ -41,4 +43,5 @@ def test_get_element_screenshot(driver, pages):
4143
pages.load("simpleTest.html")
4244
element = driver.find_element(By.ID, "multiline")
4345
result = base64.b64decode(element.screenshot_as_base64)
44-
assert imghdr.what("", result) == "png"
46+
kind = filetype.guess(result)
47+
assert kind is not None and kind.mime == "image/png"

0 commit comments

Comments
 (0)