Capturar Valor Ruby Watir Hpricot

Iniciado por daniel.r.23, 29 Marzo 2013, 06:14 AM

0 Miembros y 1 Visitante están viendo este tema.

daniel.r.23

Buenas, tengo problema al capturar catura de una url para obtener un valor, muestro


require 'watir'
require 'open-uri'
require 'hpricot'

browser = Watir::Browser.start  "file:///C:/Documents%20and%20Settings/Administrador/Escritorio/Page%20Disco/Ip%20%2010.1.23.11%20-%20Servidor%20%20siscom%208080%20-%20_siscomprod_servlet_.htm"

browser.text_field(:id, "W0007_USUCOD").set("DRAMOS")
browser.text_field(:id, "W0007_USUPASS").set("DRAMOS")

browser.link(:text, "Locales").click
browser.link(:text, "Consultas").click
browser.link(:text, "Mov.Stock y Precios").click
browser.text_field(:id, "W0010_PRDCOD").set("500000")
browser.button(:value, "Mostrar Datos").click
browser.link(:text, "ACEITE GIRASOL LEADER PRICE 5LT").click
browser.window(:title => "Datos del artículo").use do
  doc = Hpricot(open(browser.url))
 puts doc.at("input[@name='_TIPOCOMPRA']")['value']


Una ves que se me habre una ventana con el titulo Datos del artículo esta la capturo y le obtengo la url la cual se la paso como parametro con el open al Hpricot para buscar el elemento input con el name = _TIPOCOMPRA y obtener el valor de value. el problema esta en que me salta un error


C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in `initialize': Invalid argument - file:///C:/Documents%20and%20Settings/Administrador/Escritorio/Page%20Disco/Datos%20del%20articulo.htm (Errno::EINVAL)
from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in `open'
from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in `open'
from C:/Documents and Settings/Administrador/Escritorio/iniciativa.rb:19:in `block in <main>'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.6.0/lib/watir-classic/window.rb:67:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.6.0/lib/watir-classic/window.rb:67:in `use'
from C:/Documents and Settings/Administrador/Escritorio/iniciativa.rb:18:in `<main>'
[Finished in 3.6s with exit code 1]


entiendo que el problema radica en como esta obteniendo la url pero no tengo ni idea de como solucionarlo!!!

RyogiShiki

prueba con esto.

Código (ruby) [Seleccionar]

url = URI::encode(browser.url)
doc = Hpricot(open(url))


Si eso no funciona entonces con este otro:

Código (ruby) [Seleccionar]

url = CGI::escape(browser.url)
doc = Hpricot(open(url))



daniel.r.23

#2
ya esta solucionado el tema es que queria descargar un archivo de esa forma ejecute mi pagina con visual studio para que me la cargar en un localhost y santo remedio.
Ahora una consulta yo tengo una tabla con una estructura similar a esta:


<table id="GRID1" class="FSGrande" cellspacing="0" border="1">
  <tbody>
     <tr class="FSGrandeOdd">
        <td>
        <td width="150" style="WIDTH: 150px">
        <td width="100" align="right" style="WIDTH: 100px">
        <td width="70" align="right" style="WIDTH: 70px">
        <td width="100" align="right" style="WIDTH: 100px">
        <td width="100" align="right" style="WIDTH: 100px">
        <td width="100" align="right" style="WIDTH: 100px">
     </tr>
     <tr class="FSGrandeEven">
     <tr class="FSGrandeOdd">
     <tr class="FSGrandeEven">
     <tr class="FSGrandeOdd">
     <tr class="FSGrandeEven">
     <tr class="FSGrandeOdd">
     <tr class="FSGrandeEven">
     <tr class="FSGrandeOdd">
     <tr class="FSGrandeEven">
     <tr class="FSGrandeOdd">
  </tbody>
</table>


como con Hpricot puede recorrer cada fila y celda evaluando su contenido???
sabiendo que la cantidad de filas puede variar y las celdad son siempre iguales!!

daniel.r.23

Por favor alguien que me pueda explicar un poco mas sobre este tema!!!
logre a partir de unos post llegar a este cód:


require 'rubygems'
require 'hpricot'
require 'open-uri'

results = []
doc = Hpricot(open('').read)
doc.search('//table[@class="FSGrande"]/tbody/tr/td/input').each { |result|
   results << {result.attributes['value']}
}
results



Se supone que me deberia de desplagar en pantalla los valore del atributo value de cada input pero no lo hace!!, compila y muestra el tiempo de compilacion.

reitero el html que estoy tratando de examinar.


<table id="GRID1" class="FSGrande" cellspacing="0" border="1">
    <tbody>
        <tr class="FSGrandeOdd">
            <td>
                <input type="hidden" value="01/03/2013" name="STMFECHAMOV_0001">
                <span id="span_STMFECHAMOV_0001" style="background: transparent">01/03/2013</span>
            </td>
            <td width="150" style="width: 150px">..etc..</td>
            <td width="100" align="right" style="width: 100px">..etc..</td>
            <td width="70" align="right" style="width: 70px">..etc..</td>
            <td width="100" align="right" style="width: 100px">..etc..</td>
            <td width="100" align="right" style="width: 100px">..etc..</td>
            <td width="100" align="right" style="width: 100px">..etc..</td>
        </tr>
        <tr class="FSGrandeEven">..etc..</tr>
        <tr class="FSGrandeOdd">..etc..</tr>
        <tr class="FSGrandeEven">..etc..</tr>
        <tr class="FSGrandeOdd">..etc..</tr>
        <tr class="FSGrandeEven">..etc..</tr>
        <tr class="FSGrandeOdd">..etc..</tr>
        <tr class="FSGrandeEven">..etc..</tr>
        <tr class="FSGrandeOdd">..etc..</tr>
        <tr class="FSGrandeEven">..etc..</tr>
        <tr class="FSGrandeOdd">..etc..</tr>
    </tbody>
</table>