2016-11-18 2 views
0

Ich versuche Selenium, Python und Firefox zu verwenden, um Daten in ein Eingabefeld auf einer Website einzugeben und aus einem Dropdown-Menü in dem Textfeld auszuwählen, aber nicht konnte tun Sie dies. Früher war es "nur" ein Textfeld, aber die Website wurde geändert.Eingabefeld mit Dropdown-Menü in Selenium und Python

Die Website befindet sich unter http://ecos.fws.gov/ecp/

die Eingangs Textbox ID ist "Suchbegriff". Die Website erlaubt es, einen wissenschaftlichen Namen (oder einen Teil eines wissenschaftlichen Namens) einzugeben und dann aus Optionen auszuwählen. Wenn Sie beispielsweise "Acipenser brevirostrum" in das Textfeld eingeben, erhalten Sie eine einzige Option, auf die Sie klicken können.

Leider nicht sicher, wie Sie dies codieren. Jede Hilfe wäre willkommen. Bisher habe ich das.

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) 

Die letzten drei Zeilen jetzt zu arbeiten, verwendet aber, dass es sowohl ein Eingabefeld mit einem Dropdown-Menü ist, versagt es.

Jede Hilfe wäre willkommen.

+0

Sieht aus wie die Website unter der Wartung im Moment .. – alecxe

+0

Ich bemerkte, dass, gleich nachdem ich meine Frage gepostet habe. Nur mein Glück. Danke, dass du dir die Frage angesehen hast. – user44796

+0

Können Sie den entsprechenden HTML-Code und den Fehler-Trace teilen? –

Antwort

0

Nachdem Sie den Namen in das Suchfeld (id - searchTerm) eingegeben haben, überprüfen Sie die Sichtbarkeit der div (Klasse - Autovervollständigen - Vorschläge) mit einer expliziten Wartezeit. Dies enthält die Vorschläge, die die Website aufgibt. Dann müssen Sie die Option finden, die für Sie arbeitet. Probieren Sie diesen xpath und klicken Sie auf das Element. Sie sollten die Option findelements verwenden, da Ihr Text möglicherweise nicht übereinstimmt und Sie einen Fehler erhalten.

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

Wenn Sie Probleme haben, die zum automatischen Vervollständigung Dropdown haben, wenn Sie den Suchtext eingeben, den Text ein Zeichen in einer Zeit mit einem kleinen Intervall in senden zwischen dem Anruf auszulösen.

0

Sie einfach driver.find_element_by_name verwenden können, wie html ist:

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

Dieser Code funktioniert:

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() 
Verwandte Themen