Skip to content

Commit ffa64b8

Browse files
committed
Update CDP Mode
1 parent c3f15d0 commit ffa64b8

File tree

3 files changed

+21
-41
lines changed

3 files changed

+21
-41
lines changed

seleniumbase/core/sb_cdp.py

Lines changed: 16 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -187,46 +187,23 @@ def find_element_by_text(self, text, tag_name=None, timeout=None):
187187
element with the given tag. (Eg: a, button, div, script, span)"""
188188
if not timeout:
189189
timeout = settings.SMALL_TIMEOUT
190-
self.__add_light_pause()
191-
time_now = time.time()
192-
self.assert_text(text, timeout=timeout)
193-
spent = int(time.time() - time_now)
194-
remaining = 1 + timeout - spent
195-
if tag_name:
196-
self.assert_element(tag_name, timeout=remaining)
197-
elements = self.loop.run_until_complete(
198-
self.page.find_elements_by_text(text=text)
199-
)
200190
if tag_name:
201-
tag_name = tag_name.lower().strip()
202-
for element in elements:
203-
if element and not tag_name:
204-
element = self.__add_sync_methods(element)
205-
return self.__add_sync_methods(element)
206-
elif (
207-
element
208-
and tag_name in element.tag_name.lower()
209-
and text.strip() in element.text
210-
):
211-
element = self.__add_sync_methods(element)
212-
return self.__add_sync_methods(element)
213-
elif (
214-
element
215-
and element.parent
216-
and tag_name in element.parent.tag_name.lower()
217-
and text.strip() in element.parent.text
218-
):
219-
element = self.__add_sync_methods(element.parent)
220-
return self.__add_sync_methods(element)
221-
elif (
222-
element
223-
and element.parent
224-
and element.parent.parent
225-
and tag_name in element.parent.parent.tag_name.lower()
226-
and text.strip() in element.parent.parent.text
227-
):
228-
element = self.__add_sync_methods(element.parent.parent)
229-
return self.__add_sync_methods(element)
191+
try:
192+
return self.find_element(
193+
'%s:contains("%s")' % (tag_name, text), timeout=timeout
194+
)
195+
except Exception:
196+
pass # The exception will be raised later
197+
else:
198+
self.__add_light_pause()
199+
self.assert_text(text, timeout=timeout)
200+
elements = self.loop.run_until_complete(
201+
self.page.find_elements_by_text(text=text)
202+
)
203+
for element in elements:
204+
if element:
205+
element = self.__add_sync_methods(element)
206+
return self.__add_sync_methods(element)
230207
plural = "s"
231208
if timeout == 1:
232209
plural = ""

seleniumbase/fixtures/base_case.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10173,7 +10173,7 @@ def wait_for_text_visible(
1017310173
text = self.__get_type_checked_text(text)
1017410174
selector, by = self.__recalculate_selector(selector, by)
1017510175
if self.__is_cdp_swap_needed():
10176-
return self.cdp.find_element(selector, timeout=timeout)
10176+
return self.cdp.wait_for_text(text, selector, timeout=timeout)
1017710177
elif self.__is_shadow_selector(selector):
1017810178
return self.__wait_for_shadow_text_visible(text, selector, timeout)
1017910179
return page_actions.wait_for_text_visible(
@@ -10530,6 +10530,8 @@ def wait_for_link_text_visible(self, link_text, timeout=None):
1053010530
timeout = settings.LARGE_TIMEOUT
1053110531
if self.timeout_multiplier and timeout == settings.LARGE_TIMEOUT:
1053210532
timeout = self.__get_new_timeout(timeout)
10533+
if self.__is_cdp_swap_needed():
10534+
return self.cdp.find_element_by_text(text=link_text, tag_name="a")
1053310535
return self.wait_for_element_visible(
1053410536
link_text, by="link text", timeout=timeout
1053510537
)

seleniumbase/undetected/cdp_driver/browser.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ async def get(
369369
proxy_user = username_and_password.split(":")[0]
370370
proxy_pass = username_and_password.split(":")[1]
371371
await connection.set_auth(proxy_user, proxy_pass, self.tabs[0])
372-
time.sleep(0.25)
372+
time.sleep(0.22)
373+
await connection.sleep(0.05)
373374
frame_id, loader_id, *_ = await connection.send(
374375
cdp.page.navigate(url)
375376
)

0 commit comments

Comments
 (0)