Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema Gemma Mechanize

    Buongiorno a tutti. Avrei bisogno di una mano co la gemma Mechanize . Mi sto interfacciando ad una pagina web, faccio un login ad un sito e va tutto bene . Poi vorrei percorrere un link e posizionarmi su quella pagina per seguire un altro link, e da li riempire un nuovo form, e qui ci sono dei problemi
    vi posto il codice :

    require 'rubygems'
    require 'mechanize'
    agent = WWW::Mechanize.new
    wp = agent.get('url')
    wp_form = wp.forms.first
    wp_form.fields.each do |f|
    puts " " + f.name + ": " + f.value if f.value
    end
    wp_form.loginname='loginname'
    wp_form.password='password'
    pp wp_form.buttons.first
    res = agent.submit(wp_form, wp_form.buttons.first)
    puts "Links on #{res.title}"
    res.links.each do |link|
    puts "#{link.text} (#{link.href})"
    end
    rate=agent.click res.links.text("nome link") #problema

    mi da un errore nell'ultima riga .
    Sarei grato a tutti che intendono aiutarmi

  2. #2
    prima problema risolto è bastato sostituire la riga con :

    rate = agent.click(res.link(:text=>"testo link"))

    ora pero il problema è che se vado a vedere i form della pagine con

    rate.forms.each do |form|
    puts form.name
    end

    mi dice

    nil
    nil

    ma io dal codice html riesco a vedere i due form :
    come mai?

  3. #3
    Se a qualcuno interessa ho risolto il problema semplicemente intercettando l'action dlel form e poi andando a selezionare il sudetto form con :

    change_form = change_rate.form_with(:action => parameter)

    dove parameter è la stringa che contiene l action del form.
    Spero che qualcuno di voi lo trovi interessanti
    Alla prossimo Rubbino

  4. #4
    E' possibile che l'attributo name non fosse presente per quella form.
    In genere non c'è, è più probabile che si sia una classe o un id.

  5. #5
    Vero ....
    Ora ho un altro piccolo problema . Come fare a selezionare un campo da una select ? Ovvero ora ho scritto :

    change_form = change_rate.form_with(:action => parameter)

    e poi

    change_form.so.value=" valore "

    ma l'interprete mi dice :

    ailadmin/matrix.html?ses=10420fcead309in_ruby.rb:52: undefined method `so' for #<WWW::Mechanize::F

    qualcuno mi sa aiutare ? Grazie

  6. #6

  7. #7
    Ok prima parte del problema risolto .....
    ora però ho un altro dubbio, sul sito in questione ci sono delle combobox con cui selezionare alcuni campi.

    ho provato a fare :
    form.checkbox_with(:name => 'name').value='valore'
    ma in alcuni casi non potevo utilizzare quella sintassi obbligandomi ad usare quest'altra sintassi :
    form.name='valore'
    questo perchè?
    Dopo aver completato il riempimento submitto tutto con il bottone
    Dopo aver interpretato il tutto ruby non da problemi ma non si vedono nessun cambiamenti, come mai ? Sembra non funzionare ........,

  8. #8
    Con un paio di caffè in piu ho risolto ......
    era chiaro che una checkbox oltre a settare il valore dovevo anche spuntarla con l'attributo check

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.