2016-07-16 52 views
2

我有一個基本的硒腳本,使用chromedriver二進制文件。我試圖用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令牌id的輸入類型。解決第二個recaptcha令牌id創建後。這是我希望存儲在變量中的值。我正在考慮使用該ID檢查找到的元素的長度。如果大於1解析。但我不確定源更新本身。

UPDATE:

隨着越來越多的研究它與元素的性質,特別是要做到:與標籤:<input type="hidden"。所以我想重申一下我的問題,如何提取隱藏元素的值。

回答

0

您正在查找的元素(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()