如何在 Selenium 中定位 Shadow DOM 和 iframe 内的元素并与之交互?

问题描述 投票:0回答:1

我正在尝试抓取一个具有 Shadow DOM 和 iframe 的网站。正如您在图片中看到的,我找不到 Shadow DOM 的任何选择器,因此我可以访问 iframe。

HTML 元素

如何定位 Shadow DOM(CSS 选择器、XPATH 等)?

我试图抓取的页面是:scrape.do

附注我的目标是这样的 iframe:

iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'cf-chl-widget-3kwf9'))
)
python selenium-webdriver shadow-dom
1个回答
0
投票

您看到的第一页实际上是 Cloudflare Turnstile 验证码,它阻止您到达您真正想要访问的页面。可以使用 SeleniumBase UC 模式轻松绕过它:

from seleniumbase import Driver

driver = Driver(uc=True)
try:
    driver.uc_open_with_reconnect("dashboard.scrape.do/login", 4)
    driver.uc_gui_click_captcha()
    driver.type("#username", "Hello!")
    driver.sleep(3)
finally:
    driver.quit()

如果在 Linux 上运行,您肯定需要使用

SB()
格式,其中包括更多功能和特殊的虚拟显示:

from seleniumbase import SB

with SB(uc=True) as sb:
    url = "dashboard.scrape.do/login"
    sb.uc_open_with_reconnect(url, 4)
    sb.uc_gui_click_captcha()
    sb.type("#username", "Hello!")
    sb.sleep(3)
© www.soinside.com 2019 - 2024. All rights reserved.