【问题标题】:Selenium Page Source is Missing ElementsSelenium 页面源缺少元素
【发布时间】:2016-11-19 16:28:06
【问题描述】:

我有一个使用 chromedriver 二进制文件的基本 Selenium 脚本。我正在尝试显示一个带有recaptcha的页面,然后挂起直到答案完成,然后将其存储在一个变量中以备将来使用。

我遇到的障碍是我找不到 recaptcha 元素。

#!/bin/env python2.7
import os
from selenium import webdriver

driverBin=os.path.expanduser("~/Desktop/chromedriver")
driver=webdriver.Chrome(driverBin)
driver.implicitly_wait(5)
driver.get('http://patrickhlauke.github.io/recaptcha/')

有什么特别需要才能看到这个元素吗?

还有没有办法在用户解决而不刷新页面后获取令牌?

现在,recaptcha-token id 的输入类型被隐藏了。解决后会创建第二个 recaptcha-token id。这是我希望存储在变量中的值。我正在考虑使用该ID检查已找到元素的长度的循环。如果大于 1 则解析。但我不确定源代码本身是否更新。

更新:

随着更多的研究,它与元素的性质有关,特别是:标签:<input type="hidden"。所以我想改写我的问题,如何提取隐藏元素的值。

【问题讨论】:

    标签: python selenium captcha recaptcha hidden


    【解决方案1】:

    您要查找的元素(input)位于 iframe 中。您需要先切换到 iframe,然后才能找到该元素并与之交互。

    import os
    from selenium import webdriver
    
    driver=webdriver.Chrome()
    try:
        driver.implicitly_wait(5)
        driver.get('http://patrickhlauke.github.io/recaptcha/')
    
        # Find the iframe and switch to it
        iframe_path = '//iframe[@title="recaptcha widget"]'
        iframe = driver.find_element_by_xpath(iframe_path)
        driver.switch_to.frame(iframe)
    
        # Find the input element
        input_elem = driver.find_element_by_id("recaptcha-token")
    
        print("Found the input element: ", input_elem)
    
    finally:
        driver.quit()
    

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2016-05-01
      • 2021-11-19
      • 2015-05-06
      • 2015-03-24
      • 1970-01-01
      • 2021-12-29
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多