2016-05-01 5 views
1

Ich versuche, diese Seite zu kriechen:Klicken Sie auf Tasten mit Bildern

http://www.1800contractor.com/d.HI.html

Ich habe dieses Skript

from selenium import webdriver 


URL = "http://www.1800contractor.com/d.GA.html" 
zip_codes = ['30324'] 

driver = webdriver.Firefox() 
driver.get(URL) 

zip_codes = ['30324'] 
text_box = driver.find_element_by_xpath('//*[@id="zip"]') 
text_box.send_keys(zip_codes[0])   
button = driver.find_element_by_xpath('//*[@id="xmdListingsSearchForm"]') 
button.click() 

Grundsätzlich Ich brauche eine Postleitzahl in das Suchfeld zu setzen:

Dieser Teil funktioniert.

Und dann klicken Sie auf die ‚Go‘ Taste:

button = driver.find_element_by_xpath('//*[@id="xmdListingsSearchForm"]') 
button.click() 

Dieser Teil funktioniert nicht, das ist, was ich im html sehen für diese Schaltfläche:

<input type="image" src="/rfs/servicerequest/images/go_btn_grey_20x20.gif" height="20" width="20" style="position: relative; top: 1px;"> 

Also ich denke, Das Problem ist, ich bekomme nicht den Verweis auf die eigentliche Schaltfläche, sondern eine Referenz für das Bild der Schaltfläche.

Antwort

1

Es ist ein einfacher Weg, es zu lösen - sende Sie das Newline-Zeichen am Ende Ihrer Postleitzahl - es würde automatisch das Formular abschicken:

text_box.send_keys(zip_codes[0] + "\n") 

Arbeiten für mich.

Wenn Sie darauf bestehen, auf die Schaltfläche/„Taste Bild“ auf klicken, können Sie finden es die folgende CSS-Selektor unter Verwendung eines Teils des src Attributwert passend zu und versuchen, es zu halten lesbar:

driver.find_element_by_css_selector("input[src*=go_btn]").click()