Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: daniel.r.23 en 29 Marzo 2013, 06:14 am



Título: Capturar Valor Ruby Watir Hpricot
Publicado por: daniel.r.23 en 29 Marzo 2013, 06:14 am
Buenas, tengo problema al capturar catura de una url para obtener un valor, muestro

Código:
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ódigo:
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!!!


Título: Re: Capturar Valor Ruby Watir Hpricot
Publicado por: RyogiShiki en 30 Marzo 2013, 22:41 pm
prueba con esto.

Código
  1. url = URI::encode(browser.url)
  2. doc = Hpricot(open(url))

Si eso no funciona entonces con este otro:

Código
  1. url = CGI::escape(browser.url)
  2. doc = Hpricot(open(url))


Título: Re: Capturar Valor Ruby Watir Hpricot
Publicado por: daniel.r.23 en 31 Marzo 2013, 06:24 am
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:

Código:
<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!!


Título: Re: Capturar Valor Ruby Watir Hpricot
Publicado por: daniel.r.23 en 2 Abril 2013, 07:01 am
Por favor alguien que me pueda explicar un poco mas sobre este tema!!!
logre a partir de unos post llegar a este cód:

Código:
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.

Código:
<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>