2016-12-13 49 views
0

我一直在尋找如何解決這個問題,但似乎找不到任何適合我的東西。希望有人能幫忙。使用Selenium + Python將值輸入到type =「hidden」字段

我在網站上使用python和硒chrome瀏覽器,並試圖登錄到一個網站,其中有在其中輸入用戶名或電子郵件中的HTML:

<div> 
<span class="g-hdn" id="1986367435LabelSpan"><label for="1986367435">Email or username</label></span> 
<label for="1986367435">Email or username</label> 
</span> 
<span> 
<input size="40" maxlength="64" name="1986367435" id="1986367435" type="text" autocapitalize="off" autocorrect="off" placeholder="Email or username" class="fld"> 
</span> 
</div> 
<input name="runId2" type="hidden" value="AQABAAAAUCjLu3T7Joi/PEg380w56IAM9Zt6nK8i63MlZ+2gBdjoHrnTe3XAyLU4iGu37LvUilofnGbWAcTJFUjq6KhmWxEHtQVaMNfWeeaZUxXe9asa"> 

我不能選擇此輸入使用ID或名稱作爲數字每次都不同,所以我想使用placeholder =「Email或username」來選擇輸入框。

每次我選擇這個位置,並嘗試輸入一些字符串我收到一個錯誤說:

selenium.common.exceptions.ElementNotVisibleException:消息:元素不可見

這似乎是因爲類型=「隱藏」。

任何想法如何選擇並輸入文本?

我目前使用下面的代碼來選擇佔位符,這是給錯誤:

driver.find_element_by_xpath("//input[@placeholder='Email or username']").send_keys("email") 

我敢肯定,肯定的元素是否真的隱藏,我可以使用下面的選擇元素(一旦ID可用):

driver.find_element_by_xpath("//*[@id='1986367435']").send_keys("email") 

非常感謝您的幫助。

+0

與佔位符輸入的是'型=「文本」',不是隱藏的。 – Barmar

+0

你需要發佈你的Python代碼,以便我們可以看到它有什麼問題。 – Barmar

+0

你知道你錯過了一個'',對吧? – cwallenpoole

回答

0

目標輸入字段沒有type="hidden"屬性。這可能是最初頁面重定向後不可見的,所以你可以嘗試使用ExplicitWait來解決這個問題:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH,'//input[@placeholder="Email or username"]'))) 
+0

感謝安德森給你的建議。我已經給出了我嘗試,但它似乎超時:selenium.common.exceptions.TimeoutException:消息: – blountdj

+0

什麼是輸出的len(driver.find_elements_by_xpath('//輸入[@ placeholder =「電子郵件或用戶名」]') )'? – Andersson

相關問題