2013-05-11 13 views
5

Sto tentando di utilizzare Mechanize per simulare il clic su un pulsante in una pagina Web, che quindi avvierebbe il download di un file in un browser. Si tratta di un frammento del mio codiceCome salvare il file scaricato facendo clic con Mechanize

form = page.forms.first # => Mechanize::Form 
form = agent.page.form_with(:name => "aspnetForm") 

button = form.button_with(:value => "GPX file") 
pp button 

agent.submit(form, button) 

l'uscita dal tasto pp appare dunque, che significa che è il tasto destro:

#<Mechanize::Form::Submit:0x89fe874 
@name="ctl00$ContentBody$btnGPXDL", 
@node= 
    #(Element:0x44ff480 { 
    name = "input", 
    attributes = [ 
     #(Attr:0x44476d2 { name = "type", value = "submit" }), 
     #(Attr:0x44476c8 { 
     name = "name", 
     value = "ctl00$ContentBody$btnGPXDL" 
     }), 
     #(Attr:0x44476be { name = "value", value = "GPX file" }), 
     #(Attr:0x44476a0 { name = "id", value = "ctl00_ContentBody_btnGPXDL" })] 
    }), 
@value="GPX file"> 

ma che ha rilasciato la "agent.submit (forma, pulsante) "come posso ottenere Mechanize per recuperare il file che verrebbe inviato al browser facendo clic su quel pulsante?

Ho avuto una ricerca e ho trovato metodi per ottenere pagine Web o collegamenti, ma non ho visto nulla per soddisfare questo caso?

BTW Sono un principiante per Ruby e Mechanize, mi dispiace se questa è una domanda stupida, ma grazie per qualsiasi risposta!

M:

risposta

5

Il file o la pagina devono essere restituite al dal presentare:

response = agent.submit(form, button) 
File.open('saved_file', 'wb'){|f| f << response.body} 
+1

Fantastico, che sta facendo esattamente quello che mi serve, grazie pguardiario! – user2373168

Problemi correlati