seleniumbase 4.33.8__py3-none-any.whl → 4.33.10__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/browser_launcher.py +1 -0
- seleniumbase/core/sb_cdp.py +81 -9
- seleniumbase/undetected/cdp_driver/element.py +9 -6
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/METADATA +2 -2
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/RECORD +10 -10
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/LICENSE +0 -0
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/WHEEL +0 -0
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.33.8.dist-info → seleniumbase-4.33.10.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.33.
|
2
|
+
__version__ = "4.33.10"
|
@@ -600,6 +600,7 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
600
600
|
cdp.find_element = CDPM.find_element
|
601
601
|
cdp.find = CDPM.find_element
|
602
602
|
cdp.locator = CDPM.find_element
|
603
|
+
cdp.find_element_by_text = CDPM.find_element_by_text
|
603
604
|
cdp.find_all = CDPM.find_all
|
604
605
|
cdp.find_elements_by_text = CDPM.find_elements_by_text
|
605
606
|
cdp.select = CDPM.select
|
seleniumbase/core/sb_cdp.py
CHANGED
@@ -167,6 +167,57 @@ class CDPMethods():
|
|
167
167
|
self.__slow_mode_pause_if_set()
|
168
168
|
return element
|
169
169
|
|
170
|
+
def find_element_by_text(
|
171
|
+
self, text, tag_name=None, timeout=settings.SMALL_TIMEOUT
|
172
|
+
):
|
173
|
+
"""Returns an element by matching text.
|
174
|
+
Optionally, provide a tag_name to narrow down the search to an
|
175
|
+
element with the given tag. (Eg: a, button, div, script, span)"""
|
176
|
+
self.__add_light_pause()
|
177
|
+
time_now = time.time()
|
178
|
+
self.assert_text(text, timeout=timeout)
|
179
|
+
spent = int(time.time() - time_now)
|
180
|
+
remaining = 1 + timeout - spent
|
181
|
+
if tag_name:
|
182
|
+
self.assert_element(tag_name, timeout=remaining)
|
183
|
+
elements = self.loop.run_until_complete(
|
184
|
+
self.page.find_elements_by_text(text=text)
|
185
|
+
)
|
186
|
+
if tag_name:
|
187
|
+
tag_name = tag_name.lower().strip()
|
188
|
+
for element in elements:
|
189
|
+
if element and not tag_name:
|
190
|
+
element = self.__add_sync_methods(element)
|
191
|
+
return self.__add_sync_methods(element)
|
192
|
+
elif (
|
193
|
+
element
|
194
|
+
and tag_name in element.tag_name.lower()
|
195
|
+
and text.strip() in element.text
|
196
|
+
):
|
197
|
+
element = self.__add_sync_methods(element)
|
198
|
+
return self.__add_sync_methods(element)
|
199
|
+
elif (
|
200
|
+
element.parent
|
201
|
+
and tag_name in element.parent.tag_name.lower()
|
202
|
+
and text.strip() in element.parent.text
|
203
|
+
):
|
204
|
+
element = self.__add_sync_methods(element.parent)
|
205
|
+
return self.__add_sync_methods(element)
|
206
|
+
elif (
|
207
|
+
element.parent.parent
|
208
|
+
and tag_name in element.parent.parent.tag_name.lower()
|
209
|
+
and text.strip() in element.parent.parent.text
|
210
|
+
):
|
211
|
+
element = self.__add_sync_methods(element.parent.parent)
|
212
|
+
return self.__add_sync_methods(element)
|
213
|
+
plural = "s"
|
214
|
+
if timeout == 1:
|
215
|
+
plural = ""
|
216
|
+
raise Exception(
|
217
|
+
"Text {%s} with tag {%s} was not found after %s second%s!"
|
218
|
+
% (text, tag_name, timeout, plural)
|
219
|
+
)
|
220
|
+
|
170
221
|
def find_all(self, selector, timeout=settings.SMALL_TIMEOUT):
|
171
222
|
self.__add_light_pause()
|
172
223
|
selector = self.__convert_to_css_if_xpath(selector)
|
@@ -177,26 +228,48 @@ class CDPMethods():
|
|
177
228
|
for element in elements:
|
178
229
|
element = self.__add_sync_methods(element)
|
179
230
|
updated_elements.append(element)
|
180
|
-
self.__slow_mode_pause_if_set()
|
181
231
|
return updated_elements
|
182
232
|
|
183
233
|
def find_elements_by_text(self, text, tag_name=None):
|
184
234
|
"""Returns a list of elements by matching text.
|
185
|
-
Optionally, provide a tag_name to narrow down the search
|
186
|
-
|
235
|
+
Optionally, provide a tag_name to narrow down the search to only
|
236
|
+
elements with the given tag. (Eg: a, button, div, script, span)"""
|
187
237
|
self.__add_light_pause()
|
188
238
|
elements = self.loop.run_until_complete(
|
189
239
|
self.page.find_elements_by_text(text=text)
|
190
240
|
)
|
191
241
|
updated_elements = []
|
242
|
+
if tag_name:
|
243
|
+
tag_name = tag_name.lower().strip()
|
192
244
|
for element in elements:
|
193
|
-
if
|
194
|
-
|
195
|
-
|
245
|
+
if element and not tag_name:
|
246
|
+
element = self.__add_sync_methods(element)
|
247
|
+
if element not in updated_elements:
|
248
|
+
updated_elements.append(element)
|
249
|
+
elif (
|
250
|
+
element
|
251
|
+
and tag_name in element.tag_name.lower()
|
252
|
+
and text.strip() in element.text
|
196
253
|
):
|
197
254
|
element = self.__add_sync_methods(element)
|
198
|
-
updated_elements
|
199
|
-
|
255
|
+
if element not in updated_elements:
|
256
|
+
updated_elements.append(element)
|
257
|
+
elif (
|
258
|
+
element.parent
|
259
|
+
and tag_name in element.parent.tag_name.lower()
|
260
|
+
and text.strip() in element.parent.text
|
261
|
+
):
|
262
|
+
element = self.__add_sync_methods(element.parent)
|
263
|
+
if element not in updated_elements:
|
264
|
+
updated_elements.append(element)
|
265
|
+
elif (
|
266
|
+
element.parent.parent
|
267
|
+
and tag_name in element.parent.parent.tag_name.lower()
|
268
|
+
and text.strip() in element.parent.parent.text
|
269
|
+
):
|
270
|
+
element = self.__add_sync_methods(element.parent.parent)
|
271
|
+
if element not in updated_elements:
|
272
|
+
updated_elements.append(element)
|
200
273
|
return updated_elements
|
201
274
|
|
202
275
|
def select(self, selector, timeout=settings.SMALL_TIMEOUT):
|
@@ -244,7 +317,6 @@ class CDPMethods():
|
|
244
317
|
for element in elements:
|
245
318
|
element = self.__add_sync_methods(element)
|
246
319
|
updated_elements.append(element)
|
247
|
-
self.__slow_mode_pause_if_set()
|
248
320
|
return updated_elements
|
249
321
|
|
250
322
|
def find_elements(self, selector, timeout=settings.SMALL_TIMEOUT):
|
@@ -438,12 +438,15 @@ class Element:
|
|
438
438
|
)
|
439
439
|
)
|
440
440
|
)
|
441
|
-
|
442
|
-
if
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
441
|
+
try:
|
442
|
+
if result and result[0]:
|
443
|
+
if return_by_value:
|
444
|
+
return result[0].value
|
445
|
+
return result[0]
|
446
|
+
elif result[1]:
|
447
|
+
return result[1]
|
448
|
+
except Exception:
|
449
|
+
return self
|
447
450
|
|
448
451
|
async def get_position_async(self, abs=False) -> Position:
|
449
452
|
if not self.parent or not self.object_id:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.33.
|
3
|
+
Version: 4.33.10
|
4
4
|
Summary: A complete web automation framework for end-to-end testing.
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
6
6
|
Author: Michael Mintz
|
@@ -75,7 +75,7 @@ Requires-Dist: mycdp>=1.1.0
|
|
75
75
|
Requires-Dist: pynose>=1.5.3
|
76
76
|
Requires-Dist: platformdirs>=4.3.6
|
77
77
|
Requires-Dist: typing-extensions>=4.12.2
|
78
|
-
Requires-Dist: sbvirtualdisplay>=1.3.
|
78
|
+
Requires-Dist: sbvirtualdisplay>=1.3.1
|
79
79
|
Requires-Dist: six>=1.17.0
|
80
80
|
Requires-Dist: parse>=1.20.2
|
81
81
|
Requires-Dist: parse-type>=0.6.4
|
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
|
|
3
3
|
sbase/steps.py,sha256=_WvAjydKqZfTdnZW9LPKkRty-g-lfdUPmLqnZj6ulcs,43013
|
4
4
|
seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
|
5
5
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
6
|
-
seleniumbase/__version__.py,sha256=
|
6
|
+
seleniumbase/__version__.py,sha256=y69L6vxwTfyKakId4Qsl-pVfSdMvJO_IHnQ7VrqavyQ,47
|
7
7
|
seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
|
9
9
|
seleniumbase/behave/behave_sb.py,sha256=-hza7Nx2U41mSObYiPMi48v3JlPh3sJO3yzP0kqZ1Gk,59174
|
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
|
|
36
36
|
seleniumbase/console_scripts/sb_recorder.py,sha256=fnHb5-kh11Hit-E9Ha-e4QXzqLcZvtij6mb5qNd4B1Q,11032
|
37
37
|
seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
|
39
|
-
seleniumbase/core/browser_launcher.py,sha256=
|
39
|
+
seleniumbase/core/browser_launcher.py,sha256=FSnNzrnE52lXvpLToDRm2Isr4280xf7Vax_L_oTgDuY,224640
|
40
40
|
seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
|
41
41
|
seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
|
42
42
|
seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
|
@@ -50,7 +50,7 @@ seleniumbase/core/proxy_helper.py,sha256=kZnfkflB3XhuL2h-3inmx3UOLS8VAZ385BGCc4H
|
|
50
50
|
seleniumbase/core/recorder_helper.py,sha256=fNGjbapXmEsht54x1o6Igk198QdnPxDDnjUOzQxNhNQ,25055
|
51
51
|
seleniumbase/core/report_helper.py,sha256=AIl6Qava2yW1uSzbLpJBlPlYDz0KE-rVhogh8hsGWBo,12201
|
52
52
|
seleniumbase/core/s3_manager.py,sha256=bkeI8I4y19ebWuQG1oEZV5qJbotC6eN8vin31OCNWJk,3521
|
53
|
-
seleniumbase/core/sb_cdp.py,sha256=
|
53
|
+
seleniumbase/core/sb_cdp.py,sha256=UB6pDr9qIMq1ExIxtfMRzQe6CZ-fnS1JNLiS2QvYfdk,73720
|
54
54
|
seleniumbase/core/sb_driver.py,sha256=NGa4adi8OAi2WFtFkEguXg3JCd1p-JuZweIpGNifEfU,13488
|
55
55
|
seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
|
56
56
|
seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
|
@@ -119,7 +119,7 @@ seleniumbase/undetected/cdp_driver/browser.py,sha256=n8GYspU7b0pfBT4AqhqY6IdGVOZ
|
|
119
119
|
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=YhtD2Tm6PLIy9VKbgk8lHdGniS3mObyX4yAC1aG0TgQ,16733
|
120
120
|
seleniumbase/undetected/cdp_driver/config.py,sha256=oHFJ3UH0OmLmEGgG5S6SZwbyBs9ZYMsbUJ02QCA7iZc,12044
|
121
121
|
seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
|
122
|
-
seleniumbase/undetected/cdp_driver/element.py,sha256=
|
122
|
+
seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
|
123
123
|
seleniumbase/undetected/cdp_driver/tab.py,sha256=cmSUg9fRnIVYgeqs-t8Tcg1FrSVIrM5IBQmCMzvl4OQ,50678
|
124
124
|
seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
125
|
seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -135,9 +135,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
|
|
135
135
|
seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
|
136
136
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
137
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
|
138
|
-
seleniumbase-4.33.
|
139
|
-
seleniumbase-4.33.
|
140
|
-
seleniumbase-4.33.
|
141
|
-
seleniumbase-4.33.
|
142
|
-
seleniumbase-4.33.
|
143
|
-
seleniumbase-4.33.
|
138
|
+
seleniumbase-4.33.10.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
139
|
+
seleniumbase-4.33.10.dist-info/METADATA,sha256=axBgznV-hh9inoSLSfWWgqgQyWorR-6q-kai0rYSTPA,86529
|
140
|
+
seleniumbase-4.33.10.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
141
|
+
seleniumbase-4.33.10.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.33.10.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.33.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|