Python selenium和验证码

no *_*ein 2 python selenium xpath

我有一个刮板机器人,我想在遇到验证码时停止,所以不要惹恼网站.但是硒找不到它

driver.find_element_by_xpath("//*[@id='recaptcha-anchor']")
Run Code Online (Sandbox Code Playgroud)

这是xpath chrome给我的.

错误

NoSuchElementException:无法找到元素:{"method":"xpath","selector":"//*[@ id ='recaptcha-anchor']"}

任何想法为什么这不起作用?

And*_*son 8

AFAIK,验证码通常位于一个内部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']")
Run Code Online (Sandbox Code Playgroud)

如果您需要切换回iframe:

driver.switch_to.default_content()
Run Code Online (Sandbox Code Playgroud)