2016-11-18 91 views
0

我想使用Selenium,python和firefox將數據輸入到網站的輸入框中,並從文本框中的下拉菜單中進行選擇,但一直無法這樣做。以前它只是一個文本框,但是網站被改變了。Selenium和Python中的下拉菜單中的輸入框

網站位於http://ecos.fws.gov/ecp/

輸入文本框ID爲 「SEARCHTERM」。該網站允許輸入科學名稱(或科學名稱的一部分),然後從選項中進行選擇。例如,如果您在文本框中輸入「Acipenser brevirostrum」,它將爲您提供一個單擊選項。

不幸的是,不知道如何編碼。任何幫助,將不勝感激。到目前爲止,我有這個。

import selenium 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 
from selenium.webdriver.support.ui import Select 

binary = FirefoxBinary(r'C:/Program Files (x86)/Mozilla Firefox/firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary) 
driver.get("http://ecos.fws.gov/ecp") 

SciName = driver.find_element_by_id('searchTerm') 
SciName.send_keys(names) 
SciName.send_keys(Keys.RETURN) 

最後三行用於工作,但現在它既是帶有下拉菜單的輸入框,也是失敗。

任何幫助,將不勝感激。

+0

貌似該網站是目前維持在... – alecxe

+0

我注意到,在我發佈我的問題後。只是我的運氣。謝謝你看這個問題。 – user44796

+0

你能分享相應的HTML代碼和錯誤跟蹤嗎? –

回答

0

在搜索框(id - searchTerm)中輸入名稱後,用明確的等待檢查div(類 - 自動完成建議)的可見性。這包含網站拋出的建議。然後你必須找到適合你的選項。試試這個xpath並點擊元素。您應該使用findelements選項,因爲您的文本可能不匹配任何內容,並且會出現錯誤。

"//div[@class='autocomplete-suggestion'][contains(.,'Acipenser brevirostrum')]" 

如果你獲得,當你鍵入搜索文本自動完成下拉的問題,在同一時間,其間引發的召喚小間隔發送的文字的一個字符。

0

,你可以簡單地使用driver.find_element_by_name,因爲HTML是:

<input type="text" class="form-control" name="query" placeholder="Search ECOS"> 

此代碼將工作:

from selenium import webdriver 

driver = webdriver.Chrome() 
driver.maximize_window() 
driver.get("http://ecos.fws.gov/ecp/") 

driver.find_element_by_name("query").click() 
driver.find_element_by_name("query").send_keys("test") 
driver.find_element_by_css_selector("button.btn.btn-default").click()