|
1 | 1 | """Add CDP methods to extend the driver"""
|
| 2 | +import asyncio |
2 | 3 | import fasteners
|
3 | 4 | import os
|
4 | 5 | import re
|
|
11 | 12 | from seleniumbase.fixtures import js_utils
|
12 | 13 | from seleniumbase.fixtures import page_utils
|
13 | 14 | from seleniumbase.fixtures import shared_utils
|
| 15 | +from seleniumbase.undetected.cdp_driver import cdp_util |
14 | 16 |
|
15 | 17 |
|
16 | 18 | class CDPMethods():
|
@@ -208,14 +210,16 @@ def find_element_by_text(self, text, tag_name=None, timeout=None):
|
208 | 210 | element = self.__add_sync_methods(element)
|
209 | 211 | return self.__add_sync_methods(element)
|
210 | 212 | elif (
|
211 |
| - element.parent |
| 213 | + element |
| 214 | + and element.parent |
212 | 215 | and tag_name in element.parent.tag_name.lower()
|
213 | 216 | and text.strip() in element.parent.text
|
214 | 217 | ):
|
215 | 218 | element = self.__add_sync_methods(element.parent)
|
216 | 219 | return self.__add_sync_methods(element)
|
217 | 220 | elif (
|
218 |
| - element.parent |
| 221 | + element |
| 222 | + and element.parent |
219 | 223 | and element.parent.parent
|
220 | 224 | and tag_name in element.parent.parent.tag_name.lower()
|
221 | 225 | and text.strip() in element.parent.parent.text
|
@@ -269,15 +273,17 @@ def find_elements_by_text(self, text, tag_name=None):
|
269 | 273 | if element not in updated_elements:
|
270 | 274 | updated_elements.append(element)
|
271 | 275 | elif (
|
272 |
| - element.parent |
| 276 | + element |
| 277 | + and element.parent |
273 | 278 | and tag_name in element.parent.tag_name.lower()
|
274 | 279 | and text.strip() in element.parent.text
|
275 | 280 | ):
|
276 | 281 | element = self.__add_sync_methods(element.parent)
|
277 | 282 | if element not in updated_elements:
|
278 | 283 | updated_elements.append(element)
|
279 | 284 | elif (
|
280 |
| - element.parent |
| 285 | + element |
| 286 | + and element.parent |
281 | 287 | and element.parent.parent
|
282 | 288 | and tag_name in element.parent.parent.tag_name.lower()
|
283 | 289 | and text.strip() in element.parent.parent.text
|
@@ -2093,3 +2099,13 @@ def save_screenshot(self, name, folder=None, selector=None):
|
2093 | 2099 | )
|
2094 | 2100 | else:
|
2095 | 2101 | self.select(selector).save_screenshot(filename)
|
| 2102 | + |
| 2103 | + |
| 2104 | +class Chrome(CDPMethods): |
| 2105 | + def __init__(self, url=None, **kwargs): |
| 2106 | + if not url: |
| 2107 | + url = "about:blank" |
| 2108 | + loop = asyncio.new_event_loop() |
| 2109 | + driver = cdp_util.start_sync(**kwargs) |
| 2110 | + page = loop.run_until_complete(driver.get(url)) |
| 2111 | + super().__init__(loop, page, driver) |
0 commit comments