Python Selenium 和验证码

标签 python selenium xpath

我有一个抓取机器人,我想在遇到验证码时停止,以免惹恼网站。但是selenium找不到

driver.find_element_by_xpath("//*[@id='recaptcha-anchor']")

这是 chrome 给我的 xpath。

错误

NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//*[@id='recaptcha-anchor']"}

知道为什么这不起作用吗?

最佳答案

据我所知,验证码通常位于 iframe 中,因此您可以在搜索所需元素之前尝试切换到 iframe:

frame = driver.find_element_by_xpath('//iframe[contains(@src, "recaptcha")]')
driver.switch_to.frame(frame)
driver.find_element_by_xpath("//*[@id='recaptcha-anchor']")

如果您需要从 iframe 切换回来:

driver.switch_to.default_content()

关于Python Selenium 和验证码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187909/

相关文章:

Python PIL 绘制文本和多行文本—— anchor 参数的使用

python - 没有名为 cairo 的模块 - python 和 pip

python - 如何使用代理下载带有 url 的 zip 文件

selenium - 使用 BrowserMobProxy 进行 Selenium 测试时 Chrome 中的 ERR_EMPTY_RESPONSE

xpath - 在XPATH中获取元素的名称

python - Flask 运行时出现问题

Java Selenium 选择

java - 在java selenium中执行测试用例之前,我可以在桌面上显示消息吗?

c - 根据子元素的内容使用 XPath 过滤 XML

python - 垃圾。从 div 中提取 html 而不包装父标签