Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2016
fqm33 fqm33 is offline
Miembro
NULL
 
Registrado: ago 2016
Posts: 18
Poder: 0
fqm33 Va por buen camino
Talking

no problema bitbow, bueno y yendo a mi pregunta, creo que el problema (fuera de no saber), es que cuando entro la contraseña, el me envía a la pagina del menú, por supuesto los items no los mismos, entonces la pregunta puntual es, como hago referencia a un elemento (id) de la pagina que me esta mostrando el webbrowser en ese momento si la cuenta de los items ya no es la anterior que tenia el Webbrowser?, (creo que esta mas difícil entender la preguntar que solucionarla, pero no encuentro una forma mas técnica de decirlo), gracias muchachos cualquier aporte es valioso.
Responder Con Cita
  #2  
Antiguo 26-09-2016
fqm33 fqm33 is offline
Miembro
NULL
 
Registrado: ago 2016
Posts: 18
Poder: 0
fqm33 Va por buen camino
De nuevo buenos días, sigo con mi proyecto, y ahora me encuentro que debo seleccionar de una lista desplegable una opción (siempre la misma), como me indico Delphius hace algunas semanas encontré el código HTML, sin embargo opte por Webbrowser ( no se si es la mejor elección, pero es de la que mas encontré documentación), y necesito por favor ayuda para poder seleccionar esa opción con el Webbrowser, muchas gracias.
Responder Con Cita
  #3  
Antiguo 27-09-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 13
bucanero Va camino a la fama
Por lo que explicas de tu problema, se parece mucho a un sistema que tuve que desarrollar hace un tiempo para poder subir un catalogo de productos generado en CSV a una web de ventas de terceros.

Las instrucciones que esta web facilitaba para explicarle al usuario la subida de productos era el mismo proceso que indicas.
1.- Abres tu fichero CSV con EXCEL (Este CSV contiene los datos de los productos que vas a dar de ALTA)
2.- copias solamente la columna de tus códigos de producto a una pagina en blanco y la guardas como un nuevo CSV que
envías a través de su panel de administración, al que se accede con validación de usuario y clave,
3.- Descarga un nuevo CSV que te devuelve el sistema de ellos donde han añadido una columna mas junto a la los códigos tuyos de producto con un identificador que ellos le asignan a tus productos (el orden de los productos en este nuevo CSV es exactamente igual al que se le envía),
4.- Ahora abres este nuevo CSV también en EXCEL y copias la columna que ellos han añadido insertandola delante de tu columna de codigos, y gurdas de nuevo el fichero que ademas contiene el resto de la información de producto (nombre, descripción, precio, stocks ... ).
5.- Sube ese nuevo fichero de nuevo a la web para que se terminen de publicar los articulos.
Este proceso en realidad esta explicado en sus instrucciones de forma, por eso se abre con EXCEL, que el usuario lo vea simple,
y ademas poder hacerlo totalmente manual a partir de un listado de productos en CSV o incluso desde cero.
EXCEL salvo para tener claro que hacer en cada momento no lo necesite para nada.

En mi caso en particular para automatizarlo, utilice PHP y el proceso de envío lo hice a través de las librerías CURLS,
pero el proceso al final es muy parecido a como se haría en delphi
En todos las consultas CURLS o en delphi (TIDHTTP) es necesario incluir las cabezeras de identificación.

En cuanto a los datos a enviar, ademas de añadir el fichero CSV, también hay que añadir de forma manual los campos que monta el form de la web de ellos con las opciones que se desean seleccionar (Este es el método que te explico Delphius un poco mas arriba), en mi caso estas opciones siempre son las mismas y no suelen cambiar, y el envío para poder enviar un fichero se hace por el método POST.


Si todo va bien, en mi caso devuelven un numero, que es el identificador del fichero que has enviado en el sistema de ellos, a partir de este numero los siguientes ficheros de descarga son fáciles de identificar, pues siempre lo suelen incluir.

Y en cuanto a las respuestas de la pagina, suelen ser paginas relativamente cortas, con identificadores fáciles de encontrar dentro del código HTML, y se trata de buscar los enlaces que devuelve para la descarga de los ficheros que ellos te generan (realizar una especie de parseador, junto al identificador de fichero obtenido anteriormente)

El mayor problema esta en:
- acceder al área privada, a veces es necesario poner cierto parametros concretos en las cabezeras de envio,
- Saber que campos con sus correspondientes valores tienes que enviar
- y que datos vas a recibir.
No se si este caso que explico es parecido o similar a lo que quieres realizar
Si necesitas mas información, te puedo orientar

Un Saludo
Responder Con Cita
  #4  
Antiguo 27-09-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
En estos días de mensajes de 140 caracteres que duran no más de 140 segundos en la mente del lector, cualquier ayer es prehistoria.
Responder Con Cita
  #5  
Antiguo 30-09-2016
fqm33 fqm33 is offline
Miembro
NULL
 
Registrado: ago 2016
Posts: 18
Poder: 0
fqm33 Va por buen camino
Buenas Noches, compañeros, gracias por las respuestas, Bucanero tienes razón, lo que estoy tratando de crear es muy parecido, a lo que indicas, con alguna modificación muy pequeña (no se que tanto en código), que cuando lleno la información del formulario WEB desde Excel, el sistema verifica la información y me arroja un dato, que debo cargar al registro de Excel, y así con cada fila, y claro bucanero estoy muy interesado en tu asesoría y en la de todos, aunque tengo muchos vacíos, he aprendido un montón con sus comentarios.
como indicaba anteriormente estoy usando WebBrowser, y ahora estoy en la selección de una opción de un combobox, aquí el código HTML.

[HTML]
</td>
<td class="fila1">
<select name="ctl00$ph$ucProds$ddlClasificacion" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ph$ucProds$ddlClasificacion\',\'\')', 0)" id="ctl00_ph_ucProds_ddlClasificacion" tabindex="2" class="comboBox";">
<option selected="selected" value="">&lt;&lt;Seleccione&gt;&gt;</option>
<option value="29">Activa1</option>
<option value="27">Activa2</option>
<option value="28">Activa3</option>

</select>
</td>
[/HTML]

he tratado de usar varias(muchas) alternativas para escogerla pero ninguna me funciona, anexo una que cuando doy click dice metodo no soportado, sin embargo otras sacan otros tipos de error.
esta y las demás las he encontrado navegando por ahi,

Código Delphi [-]
WebBrowser1.Oleobject.Document.GetElementByID('ctl00$ph$ucProds$ddlClasificacion').GetElementsByTagN  ame('Option').element.GetAttribute('28').Click;

agradecería un ejemplo de como realizar la selección, o una forma mas optima y/o técnica de realizarlo, de nuevo muchas gracias.
Responder Con Cita
  #6  
Antiguo 30-09-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Yo no he usado el TWebBrowser, no al menos para algo como lo que pretendes hacer.

Yo no buscaría simular/emular las acciones por medio del Browser como si fuera un usuario... Al menos eso es lo que me queda y entiendo que estás intentando hacer. De lo que estoy percibiendo, pareciera, por ese código que estás intentando ejecutar un Click sobre una lista desplegable por medio del TWebBrowser.

Yo, como te dije, buscaría la forma de hacerlo por otra vía. Le pediría a la página que directamente me de los datos, y le pasaría los parámetros finales. No me tomaría la "molestia" de simular clics, seleccionar opciones, etc. Directamente le solicito al server lo que necesito y que el se encargue de generarme la página HTML final para que yo lea y guarde en mi archivo de excel, una base de datos, o lo que fuese lo que realmente necesito poder recuperar y tener de manera persistente.

Nota que todo con lo que interactúes se traduce en última en un valor que el escript php/asp se encargará de recibir por medio de un parámetro.

Necesariamente debe haber un trabajo de ingeniería inversa y ponerte a estudiar como es que recibe los datos.
Como te dije unos post antes... una selección por ejemplo desde una lista desplegable se traducirá en un valor que luego la página recibe como parámetro. De igual forma lo que le pongas en algún Edit/Caja de texto o como le llames. Al final todo se traduce en una orden POST o GET sobre la página y se le pasará los parámetros.
Empieza a hacer ese trabajo de ingeniería... prueba con cada opción, y fíjate que se le manda como parámetro, y como se construye la URL final.
Si no tienes idea de como hacer eso ¡dilo!

Luego simplemente lo que debes hacer es pedirle al componente Indy o el TWebBrowser que navege a esa URL. ¡Te evitas estar jugando la página! Directamente decile: "Mirá, dame esto". Y si el proceso implica interactuar con 2 o 3 páginas, no importa... cada una estará diseñada justamente para recibir los parámetros que espera. Lo que tu debes hacer es navegar en el orden correcto cada una y recuperar del HTML generado lo que necesites.

A lo que voy es que si no te tomas la molestia de hacer la ingeniería inversa vas a seguir lidiando con clicks, que navegar, esperar respuesta, volver a mandar otro click, etc.

Mi propuesta es justamente evitarte eso: ir a los bifes. Si tu proceso te lleva a lidiar con 3 o 5 páginas, no interesa. A todas les debes revisar como y que se pasan como parámetro.

Te estás complicando al pedo, y te lo digo con todo respeto. Y para poder ayudarte mucho más vas a tener que dejar de lado ese estado de secretismo. No hay otra forma de saber que estas haciendo realmente, si lo estás haciendo bien, o que... Ayúdanos a ayudarte. De otra forma seguirás lidiando y dando vueltas en lo mismo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 30-09-2016
fqm33 fqm33 is offline
Miembro
NULL
 
Registrado: ago 2016
Posts: 18
Poder: 0
fqm33 Va por buen camino
Buenas Noches, Delphius tomo nota de tus comentarios gracias, pues lo que dices es precisamente lo que estoy haciendo (simulando acciones), cuando dices ingeniería inversa es mirar el código HTML?; les comento lo que he ido haciendo:
- abro la pagina (webbrowser)
- ingreso el usuario - Webbrowser1.OleObject.Document.GetElementByID('ctl00$ContentPlaceHolder1$txtUserIni').SetAttribute(' value', 'ECM1112A');
- me abre la pagina de la contraseña
- ingreso la contraseña que genera el token
- me abre la pagina del menú principal - escojo la opción del menú (href)

Código Delphi [-]
  link := WebBrowser1.OleObject.Document.GetElementsByTagName('a');
  for i := 0 To Link.length -1 do
    if pos('/ACTIVACIONES/Http/Reingenieria/pagDispatcherEntrada.asp?Site=14',Link.item(i).href) <> 0 then
    Begin
      Link.item(i).Click;
      Sleep(100);
    End;

- me abre la pagina del ingreso de datos (hay es donde aparece el combobox del que les hablo) - hay voy.

como lo he hecho

miro el código fuente de cada pagina y asigno los clicks, que he ido necesitando, llenado los campos solicitados, y avanzando a los href correspondientes. Ahora he llegado a la pagina donde ingreso los
datos, dependiendo de la opción que seleccione, aparecen otros campos para llenar, y cuando acabo de llenar los campos se da click en un botón y el arroja el dato que necesito llevar a mi hoja de Excel.
No es ningún gran secreto (ja ja ja), es solo un aplicación para la empresa donde trabajo. tienes razón en que no tengo idea; Delphius dices que simular las acciones como si fuera un usuario,
y es que esa es la situación, a la empresa donde trabajo le asignan un usuario, y la contraseña se nos da por medio de un token. Ademas dices que esa no es vía - y creo que tienes razón, - pues te
comento por esta vía voy a pasos muy lentos, pero por las Indy que tu me recomendaste (y que la mayoría recomiendan), pues no encontré información básica como para ir aprendiendo y aplicando.
Agradezco sus orientaciones, y muchas gracias por tomarsen el trabajo de leer, analizar mis notas y apoyarmen.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar información a aplicación Delphi desde PHP elpichi Internet 3 10-05-2015 19:06:42
Enviar Datos a pagina web desde delphi tocomi Internet 3 18-02-2009 23:02:59
Problemas para enviar un mensaje desde una página web selman .NET 0 02-06-2007 00:18:58
Usar Post para enviar información a otra página halizia PHP 3 20-12-2006 14:55:12
enviar instruccion de =SUM desde delphi 5 a excel mayte mtz Varios 2 06-12-2006 16:52:28


La franja horaria es GMT +2. Ahora son las 00:45:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi