From 902929ac67c3f9b8ba9b589e01fcdf996d7f8870 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:46:12 -0500 Subject: [PATCH 1/7] Fix UC Mode issue with chromedriver 133 --- seleniumbase/core/browser_launcher.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/seleniumbase/core/browser_launcher.py b/seleniumbase/core/browser_launcher.py index 10610fed832..e03668687a1 100644 --- a/seleniumbase/core/browser_launcher.py +++ b/seleniumbase/core/browser_launcher.py @@ -5394,6 +5394,19 @@ def get_local_driver( ) driver._is_hidden = (headless or headless2) driver._is_using_uc = True + with suppress(Exception): + if int(uc_driver_version) >= 133: + for window_handle in driver.window_handles: + driver.switch_to.window(window_handle) + if driver.current_url.startswith( + "chrome-extension://" + ): + driver.close() + time.sleep(0.003) + driver.switch_to.window(driver.window_handles[0]) + time.sleep(0.003) + driver.connect() + time.sleep(0.003) if mobile_emulator: uc_metrics = {} if ( From b18c8a065d608f1c62878f58fd4d88774a6c1728 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:48:23 -0500 Subject: [PATCH 2/7] Add `get_parent()` to the SB / CDP APIs --- seleniumbase/core/browser_launcher.py | 2 ++ seleniumbase/core/sb_cdp.py | 10 ++++++++++ seleniumbase/core/sb_driver.py | 7 +++++++ seleniumbase/fixtures/base_case.py | 13 +++++++++++++ 4 files changed, 32 insertions(+) diff --git a/seleniumbase/core/browser_launcher.py b/seleniumbase/core/browser_launcher.py index e03668687a1..cf5b82cedba 100644 --- a/seleniumbase/core/browser_launcher.py +++ b/seleniumbase/core/browser_launcher.py @@ -220,6 +220,7 @@ def extend_driver(driver): driver.highlight_if_visible = DM.highlight_if_visible driver.sleep = time.sleep driver.get_attribute = DM.get_attribute + driver.get_parent = DM.get_parent driver.get_current_url = DM.get_current_url driver.get_page_source = DM.get_page_source driver.get_title = DM.get_title @@ -647,6 +648,7 @@ def uc_open_with_cdp_mode(driver, url=None): cdp.click_if_visible = CDPM.click_if_visible cdp.click_visible_elements = CDPM.click_visible_elements cdp.mouse_click = CDPM.mouse_click + cdp.get_parent = CDPM.get_parent cdp.remove_element = CDPM.remove_element cdp.remove_from_dom = CDPM.remove_from_dom cdp.remove_elements = CDPM.remove_elements diff --git a/seleniumbase/core/sb_cdp.py b/seleniumbase/core/sb_cdp.py index 98755cc7c1b..2a87ec0a389 100644 --- a/seleniumbase/core/sb_cdp.py +++ b/seleniumbase/core/sb_cdp.py @@ -91,6 +91,8 @@ def __add_sync_methods(self, element): element.get_attribute = ( lambda attribute: self.__get_attribute(element, attribute) ) + # element.get_parent() should come last + element.get_parent = lambda: self.__get_parent(element) return element def get(self, url): @@ -549,6 +551,9 @@ def __get_attribute(self, element, attribute): pass return None + def __get_parent(self, element): + return self.__add_sync_methods(element.parent) + def __get_x_scroll_offset(self): x_scroll_offset = self.loop.run_until_complete( self.page.evaluate("window.pageXOffset") @@ -769,6 +774,11 @@ def focus(self, selector): def highlight_overlay(self, selector): self.find_element(selector).highlight_overlay() + def get_parent(self, element): + if isinstance(element, str): + element = self.select(element) + return self.__add_sync_methods(element.parent) + def remove_element(self, selector): self.select(selector).remove_from_dom() diff --git a/seleniumbase/core/sb_driver.py b/seleniumbase/core/sb_driver.py index 35147607c86..0ee4744c3b3 100644 --- a/seleniumbase/core/sb_driver.py +++ b/seleniumbase/core/sb_driver.py @@ -51,6 +51,13 @@ def get_attribute(self, selector, attribute, by="css selector"): element = self.locator(selector, by=by) return element.get_attribute(attribute) + def get_parent(self, element): + if self.__is_cdp_swap_needed(): + return self.driver.cdp.get_parent(element) + if isinstance(element, str): + element = self.locator(element) + return element.find_element(by="xpath", value="..") + def get_current_url(self): if self.__is_cdp_swap_needed(): current_url = self.driver.cdp.get_current_url() diff --git a/seleniumbase/fixtures/base_case.py b/seleniumbase/fixtures/base_case.py index be4207bfdfd..dca2b26e781 100644 --- a/seleniumbase/fixtures/base_case.py +++ b/seleniumbase/fixtures/base_case.py @@ -2072,6 +2072,19 @@ def internalize_links(self): return self.set_attributes('[target="_blank"]', "target", "_self") + def get_parent(self, element, by="css selector", timeout=None): + """Returns the parent element. + If element is a string, then finds element first via selector.""" + if self.__is_cdp_swap_needed(): + return self.cdp.get_parent(element) + if isinstance(element, str): + if not timeout: + timeout = settings.LARGE_TIMEOUT + element = self.wait_for_element_present( + element, by=by, timeout=timeout + ) + return element.find_element(by="xpath", value="..") + def get_property( self, selector, property, by="css selector", timeout=None ): From 835bb6d7f2571e511485b26607ba6f1a123fd65d Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:53:08 -0500 Subject: [PATCH 3/7] Update extensions for Manifest V3 compatibility --- seleniumbase/extensions/ad_block.zip | Bin 11978 -> 1454 bytes seleniumbase/extensions/disable_csp.zip | Bin 11824 -> 20014 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/seleniumbase/extensions/ad_block.zip b/seleniumbase/extensions/ad_block.zip index fd27f299aa38d5c1e2e32b6f1ad1ecaddff7d76d..ec27557cfb1a2b994cb3a2acfde300dded8ed10a 100644 GIT binary patch literal 1454 zcmWIWW@Zs#-~hsD)!tDIP>{yRz`)C(z>u4mmzkDYT%wm%oSzpO!pp$^XVdC*5Wco$ zb$V$9Hv=QfSD;#;5ey8u{l0un1_G_$=PY`8OQ6HLtcpQ=mq|;AMDkW$i`<(6@A9Ix zZXCI}xAOk%`I^e>R-|;@cbuKZa%E5W7Ny^JlQh*1dR9Fw5^&&?wd~qg%Xo<+M=*(ws9HFllk2`31w_*fMa)M}bdO}jd2VbAC z5By;r0S!zOB$(9&q!~ZvDzJT$td#6v>Qhv76cCFz&ZzLsHTV#VsCYuc1g~@FuX^if zobbGQ+EYhQQ`gVe(^JPYl#ior)n0}p+jw{uag??$?R4#|RGnG5lIQxiHGb@xQHv%o z;abG~m6u0{XYE-Y-%FQxCQV*@*Qh(_@+a*zbA5PyczNgOl*aPN$d>xf@zE)r%X8;W z32)DtyFR|UF}%ILb0vYnz|L_`PjKf(V6cEZj|i64HHc)=2bAFg21`+CPHHhCjW7cP z0EW@h$k~2Ju4V%P*YB3CDUw|W^=uvV19x3GsnC46=SYOW%e&IC83Ozl_Rlyf{jd3d zi0i3McTH!_S=arltU+-COV?*ka{nXgcQ-k#|9;{(MS&hfigz4-9k@tO-wulOtQU7RIj9inA5R*rMMOFylL#}SbU@B0pwa;b z-Zp|*xHANnvLe76)oA3j2FhqK@U~HakpVgQaod6=29Rw5rCTGU2nVHG7UKInY4K1qR+WaxkN~p7_KQ;LXYgGKK{RYk)x@!vf*~0I@aF-2eap literal 11978 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 diff --git a/seleniumbase/extensions/disable_csp.zip b/seleniumbase/extensions/disable_csp.zip index 718326c9f90336672ed1fd00c65010882f7c77b1..9a484e5790de20fb182d2151cbfb35ed4e2c7029 100644 GIT binary patch literal 20014 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 Date: Tue, 11 Feb 2025 20:54:23 -0500 Subject: [PATCH 4/7] Refresh Python dependencies --- requirements.txt | 4 ++-- setup.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 00fda432eeb..ff2bee17e98 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -pip>=25.0 +pip>=25.0.1 packaging>=24.2 setuptools~=70.2;python_version<"3.10" setuptools>=75.8.0;python_version>="3.10" @@ -70,7 +70,7 @@ rich==13.9.4 # ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.) coverage>=7.6.1;python_version<"3.9" -coverage>=7.6.10;python_version>="3.9" +coverage>=7.6.12;python_version>="3.9" pytest-cov>=5.0.0;python_version<"3.9" pytest-cov>=6.0.0;python_version>="3.9" flake8==5.0.4;python_version<"3.9" diff --git a/setup.py b/setup.py index a865f4746fb..c69e13ae49a 100755 --- a/setup.py +++ b/setup.py @@ -147,7 +147,7 @@ ], python_requires=">=3.8", install_requires=[ - 'pip>=25.0', + 'pip>=25.0.1', 'packaging>=24.2', 'setuptools~=70.2;python_version<"3.10"', # Newer ones had issues 'setuptools>=75.8.0;python_version>="3.10"', @@ -228,7 +228,7 @@ # Usage: coverage run -m pytest; coverage html; coverage report "coverage": [ 'coverage>=7.6.1;python_version<"3.9"', - 'coverage>=7.6.10;python_version>="3.9"', + 'coverage>=7.6.12;python_version>="3.9"', 'pytest-cov>=5.0.0;python_version<"3.9"', 'pytest-cov>=6.0.0;python_version>="3.9"', ], @@ -259,7 +259,7 @@ "pdfminer": [ 'pdfminer.six==20240706', 'cryptography==39.0.2;python_version<"3.9"', - 'cryptography==44.0.0;python_version>="3.9"', + 'cryptography==44.0.1;python_version>="3.9"', 'cffi==1.17.1', "pycparser==2.22", ], From e5f51605c513367a0bf1b5a6021490bed810f69d Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:55:44 -0500 Subject: [PATCH 5/7] Update examples --- examples/cdp_mode/raw_cf.py | 2 +- examples/cdp_mode/raw_chatgpt.py | 9 +++++++-- examples/cdp_mode/raw_xhr_async.py | 7 +++---- examples/cdp_mode/raw_xhr_sb.py | 4 ++-- examples/raw_games.py | 7 ++++--- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/examples/cdp_mode/raw_cf.py b/examples/cdp_mode/raw_cf.py index 744bb55afe0..0d64a2d20e5 100644 --- a/examples/cdp_mode/raw_cf.py +++ b/examples/cdp_mode/raw_cf.py @@ -4,7 +4,7 @@ with SB(uc=True, test=True, locale_code="en") as sb: url = "https://www.cloudflare.com/login" sb.activate_cdp_mode(url) - sb.sleep(2) + sb.sleep(3) sb.uc_gui_handle_captcha() # PyAutoGUI press Tab and Spacebar sb.sleep(2) diff --git a/examples/cdp_mode/raw_chatgpt.py b/examples/cdp_mode/raw_chatgpt.py index a3ba9577fc6..fd67456c972 100644 --- a/examples/cdp_mode/raw_chatgpt.py +++ b/examples/cdp_mode/raw_chatgpt.py @@ -4,13 +4,18 @@ with SB(uc=True, test=True, ad_block=True) as sb: url = "https://chatgpt.com/" sb.activate_cdp_mode(url) + sb.sleep(1) + sb.click_if_visible('button[aria-label="Close dialog"]') query = "Compare Playwright to SeleniumBase in under 178 words" sb.press_keys("#prompt-textarea", query) sb.click('button[data-testid="send-button"]') print('*** Input for ChatGPT: ***\n"%s"' % query) + sb.sleep(3) with suppress(Exception): - # The "Send" button reappears when ChatGPT is done typing a response - sb.wait_for_element('button[data-testid="send-button"]', timeout=22) + # The "Stop" button disappears when ChatGPT is done typing a response + sb.wait_for_element_not_visible( + 'button[data-testid="stop-button"]', timeout=20 + ) chat = sb.find_element('[data-message-author-role="assistant"] .markdown') soup = sb.get_beautiful_soup(chat.get_html()).get_text("\n").strip() print("*** Response from ChatGPT: ***\n%s" % soup.replace("\n:", ":")) diff --git a/examples/cdp_mode/raw_xhr_async.py b/examples/cdp_mode/raw_xhr_async.py index bf0dd3e6fcd..6f2f3c6e6ec 100644 --- a/examples/cdp_mode/raw_xhr_async.py +++ b/examples/cdp_mode/raw_xhr_async.py @@ -65,8 +65,8 @@ async def crawl(): # Change url to something that makes ajax requests tab = await driver.get("https://learn.microsoft.com/en-us/") time.sleep(2) - for i in range(75): - await tab.scroll_down(3) + for i in range(20): + await tab.scroll_down(4) time.sleep(0.02) xhr_responses = await receiveXHR(tab, xhr_requests) @@ -87,6 +87,5 @@ async def crawl(): if __name__ == "__main__": print("<============= START: XHR Example =============>") - loop = asyncio.new_event_loop() - loop.run_until_complete(crawl()) + asyncio.run(crawl()) print("<============== END: XHR Example ==============>") diff --git a/examples/cdp_mode/raw_xhr_sb.py b/examples/cdp_mode/raw_xhr_sb.py index 51b55dde60f..2475fe7fc8f 100644 --- a/examples/cdp_mode/raw_xhr_sb.py +++ b/examples/cdp_mode/raw_xhr_sb.py @@ -64,8 +64,8 @@ async def receiveXHR(page, requests): # Change url to something that makes ajax requests sb.cdp.open("https://learn.microsoft.com/en-us/") time.sleep(2) - for i in range(15): - sb.cdp.scroll_down(15) + for i in range(10): + sb.cdp.scroll_down(8) loop = sb.cdp.get_event_loop() xhr_responses = loop.run_until_complete(receiveXHR(tab, xhr_requests)) diff --git a/examples/raw_games.py b/examples/raw_games.py index a9d5cb9b45a..4f3652f7596 100644 --- a/examples/raw_games.py +++ b/examples/raw_games.py @@ -1,13 +1,14 @@ """SB Manager using UC Mode for evading bot-detection.""" from seleniumbase import SB -with SB(uc=True, test=True) as sb: +with SB(uc=True, test=True, disable_csp=True) as sb: url = "https://steamdb.info/" sb.uc_open_with_reconnect(url, 3) sb.uc_click("a.header-login span", 3) sb.uc_gui_click_captcha() - sb.assert_text("Sign in", "button#js-sign-in") + sb.assert_text("Sign in", "button#js-sign-in", timeout=4) sb.uc_click("button#js-sign-in", 2) sb.highlight("div.page_content form") sb.highlight('button:contains("Sign in")', scroll=False) - sb.sleep(1) + sb.set_messenger_theme(location="top_center") + sb.post_message("SeleniumBase wasn't detected", duration=4) From 817fe923a4d81f7a66b263d35352aade5b7422f4 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:56:02 -0500 Subject: [PATCH 6/7] Update the docs --- examples/cdp_mode/ReadMe.md | 2 ++ help_docs/method_summary.md | 3 +++ 2 files changed, 5 insertions(+) diff --git a/examples/cdp_mode/ReadMe.md b/examples/cdp_mode/ReadMe.md index 88e3d6f29a1..37ff56aad52 100644 --- a/examples/cdp_mode/ReadMe.md +++ b/examples/cdp_mode/ReadMe.md @@ -405,6 +405,7 @@ sb.cdp.flash(selector, duration=1, color="44CC88", pause=0) sb.cdp.highlight(selector) sb.cdp.focus(selector) sb.cdp.highlight_overlay(selector) +sb.cdp.get_parent(element) sb.cdp.remove_element(selector) sb.cdp.remove_from_dom(selector) sb.cdp.remove_elements(selector) @@ -522,6 +523,7 @@ element.get_position() element.get_html() element.get_js_attributes() element.get_attribute(attribute) +element.get_parent() ``` -------- diff --git a/help_docs/method_summary.md b/help_docs/method_summary.md index ccce5ae7562..42a1902b157 100644 --- a/help_docs/method_summary.md +++ b/help_docs/method_summary.md @@ -82,6 +82,7 @@ self.set_attributes(selector, attribute, value, by="css selector") self.remove_attribute(selector, attribute, by="css selector", timeout=None) self.remove_attributes(selector, attribute, by="css selector") self.internalize_links() +self.get_parent(element, by="css selector", timeout=None) self.get_property(selector, property, by="css selector", timeout=None) self.get_text_content(selector="html", by="css selector", timeout=None) self.get_property_value(selector, property, by="css selector", timeout=None) @@ -743,6 +744,8 @@ driver.highlight_if_visible(selector) driver.sleep(seconds) driver.locator(selector) driver.get_attribute(selector, attribute) +driver.get_parent(element) +driver.get_current_url() driver.get_page_source() driver.get_title() driver.switch_to_frame(frame="iframe") From 6e83392397f7a226ee8eb185f80774e8b4aeddb6 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 11 Feb 2025 20:57:29 -0500 Subject: [PATCH 7/7] Version 4.34.13 --- seleniumbase/__version__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py index e5ff0e8c6e1..efed7ed2220 100755 --- a/seleniumbase/__version__.py +++ b/seleniumbase/__version__.py @@ -1,2 +1,2 @@ # seleniumbase package -__version__ = "4.34.12" +__version__ = "4.34.13"