SeleniumBase 示例导致 Cloudflare Turnstile 失败

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

我在尝试自动提交包含 Cloudflare Turnstile CAPTCHA 的表单时遇到了 SeleniumBase 问题。等待 7 秒后尝试查找 iframe 元素时,脚本失败并出现 NoSuchElementException。

https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_form_turnstile.py

from seleniumbase import SB

with SB(uc=True, test=True) as sb:
    url = "seleniumbase.io/apps/form_turnstile"
    sb.uc_open_with_reconnect(url, 2)
    sb.press_keys("#name", "SeleniumBase")
    sb.press_keys("#email", "[email protected]")
    sb.press_keys("#phone", "1-555-555-5555")
    sb.click('[for="date"]')
    sb.click("td.is-today button")
    sb.click('div[class="select-wrapper"] input')
    sb.click('span:contains("9:00 PM")')
    sb.highlight_click('input[value="AR"] + span')
    sb.click('input[value="cc"] + span')
    sb.scroll_to("iframe")
    sb.uc_gui_handle_cf()
    sb.highlight("img#captcha-success", timeout=3)
    sb.highlight_click('button:contains("Request & Pay")')
    sb.highlight("img#submit-success")
    sb.highlight('button:contains("Success!")')

我收到的错误消息是:

seleniumbase.common.exceptions.NoSuchElementException: Message: Element {iframe} was not present after 7 seconds!

任何关于如何使用 Cloudflare 的 Turnstile CAPTCHA 处理此 iframe 问题的见解或建议将不胜感激!

python selenium-webdriver seleniumbase cloudflare-turnstile
1个回答
0
投票

使用

seleniumbase
4.28.7
(或更新版本)尝试新版本:

from seleniumbase import SB

with SB(uc=True, test=True) as sb:
    url = "seleniumbase.io/apps/form_turnstile"
    sb.uc_open_with_reconnect(url, 2)
    sb.press_keys("#name", "SeleniumBase")
    sb.press_keys("#email", "[email protected]")
    sb.press_keys("#phone", "1-555-555-5555")
    sb.click('[for="date"]')
    sb.click("td.is-today button")
    sb.click('div[class="select-wrapper"] input')
    sb.click('span:contains("9:00 PM")')
    sb.highlight_click('input[value="AR"] + span')
    sb.click('input[value="cc"] + span')
    sb.scroll_to("div.cf-turnstile-wrapper")
    sb.uc_gui_handle_cf()
    sb.highlight("img#captcha-success", timeout=3)
    sb.highlight_click('button:contains("Request & Pay")')
    sb.highlight("img#submit-success")
    sb.highlight('button:contains("Success!")')

Cloudflare 将

iframe
隐藏在封闭的 Shadow Root 中后,对脚本进行了小改动。 (https://github.com/seleniumbase/SeleniumBase/commit/f007dcf607293c42dd2b36a76339c2dd68ec8b7f)。此外,由于 Cloudflare 所做的其他更新,
seleniumbase
4.28.7
也进行了更改。

© www.soinside.com 2019 - 2024. All rights reserved.