-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
-
How complex would it be to remove the need for chromedriver?, using CDP calls
Beta Was this translation helpful? Give feedback.
All reactions
Answered by
mdmintz
Feb 18, 2025
There's pure CDP Mode for that. Eg:
import asyncio from seleniumbase.core import sb_cdp from seleniumbase.undetected import cdp_driver def main(): url0 = "about:blank" # Set Locale code from here first url1 = "https://www.priceline.com/" # (The "real" URL) loop = asyncio.new_event_loop() driver = cdp_driver.cdp_util.start_sync() page = loop.run_until_complete(driver.get(url0)) sb = sb_cdp.CDPMethods(loop, page, driver) sb.set_locale("en") # This test expects English locale sb.open(url1) sb.sleep(2.5) sb.internalize_links() # Don't open links in a new tab sb.click("#link_header_nav_experiences") sb.sleep(3.5) sb.remove_elements("msm-...
Replies: 1 comment
-
There's pure CDP Mode for that. Eg:
import asyncio from seleniumbase.core import sb_cdp from seleniumbase.undetected import cdp_driver def main(): url0 = "about:blank" # Set Locale code from here first url1 = "https://www.priceline.com/" # (The "real" URL) loop = asyncio.new_event_loop() driver = cdp_driver.cdp_util.start_sync() page = loop.run_until_complete(driver.get(url0)) sb = sb_cdp.CDPMethods(loop, page, driver) sb.set_locale("en") # This test expects English locale sb.open(url1) sb.sleep(2.5) sb.internalize_links() # Don't open links in a new tab sb.click("#link_header_nav_experiences") sb.sleep(3.5) sb.remove_elements("msm-cookie-banner") sb.sleep(1.5) location = "Amsterdam" where_to = 'div[data-automation*="experiences"] input' button = 'button[data-automation*="experiences-search"]' sb.gui_click_element(where_to) sb.press_keys(where_to, location) sb.sleep(1) sb.gui_click_element(button) sb.sleep(3) print(sb.get_title()) print("************") for i in range(8): sb.scroll_down(50) sb.sleep(0.2) cards = sb.select_all('h2[data-automation*="product-list-card"]') for card in cards: print("* %s" % card.text) if __name__ == "__main__": main()
And here's a way using the async
CDP Mode API:
import asyncio import time from seleniumbase.undetected import cdp_driver async def main(): driver = await cdp_driver.cdp_util.start_async() page = await driver.get("about:blank") await page.set_locale("en") await page.get("https://www.priceline.com/") time.sleep(3) print(await page.evaluate("document.title")) element = await page.select('[data-testid*="endLocation"]') await element.click_async() time.sleep(1) await element.send_keys_async("Boston") time.sleep(2) if __name__ == "__main__": loop = asyncio.new_event_loop() loop.run_until_complete(main())
Beta Was this translation helpful? Give feedback.
All reactions
0 replies
Answer selected by
mdmintz
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment