Vie Abr 21, 2006 4:17 am
|
 |
xecco
Perlero Nuevo

|
Registrado: 21 Abr 2006
Mensajes: 2
|
|
| Problemas Samie |
|
|
Estoy empezando con este modulo, y tengo un pequeño problema con el siguiente script:
| Código: |
#!c:/perl/bin
#Iniciamos nuestros módulos
use Win32::OLE;
use Win32::SAM;
#Obligamos a hacer flush
$| = 1;
#Indicamos como manejar errores
$Win32::OLE::Warn = 3;
#Iniciamos nuestro navegador
StartIE();
#Cargamos la página
my $segundos = Navigate("http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=omim");
print "Tardo $segundos segundos en cargar.\n";
#Llenamos el campo de búsqueda
SetEditBox("term","adprtl1");
#Hacemos submit de la forma
ClickFormButton("Go");
#Enviamos la busqueda al ClipBoard
SetListBoxItem("SendTo","Add to Clipboard");
#Salimos del programa
exit(1); |
El problema es que a partir del comando "ClickFormButton("Go");", el programa se detiene. Aún no he podido entender el porqué.
Muchas gracias |
|
|
|

Vie Abr 21, 2006 4:45 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Cuando un usuario pulsa el botón Go, lo que ocurre en el navegador es que ejecuta la función de JavaScript siguiente:
| Código: |
function Go(cmd)
{
inGo=true;
var frm = document.frmQueryBox;
var sel = frm.db;
frm.CMD.value = escape(cmd);
if ( cmd =='Pager' ) { frm.cmd.value = ''; } else { frm.cmd.value = cmd; }
AddLimits();
var q = frm.action;
frm.action = q.substring(0, q.indexOf('?')) + '?CMD=' +frm.CMD.value + '&DB='+sel.options[sel.selectedIndex].value;
frm.submit();
inGo=false;
} |
Se vé que necesita acceder a los valores de los campos db y action para hacer la composición del URL que va a pedir a continuación al hacer el submit. El campo db es el select que está a la izquierda.
Básicamente, se crea el mismo URL que has utilizado para hacer la búsqueda de la base de datos OMIM. Pero al hacer el submit, se está enviando por medio del POST el resto de las variables que el usuario ha rellenado.
Eso quiere decir que si sólo quieres saber los detalles de adprt11, lo más sencillo es pedir este URL:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=omim&term=adprtl1 |
|

Vie Abr 21, 2006 7:23 am
|
 |
xecco
Perlero Nuevo

|
Registrado: 21 Abr 2006
Mensajes: 2
|
|
|
|
|
!!Muchas gracias!! Pero no sólo me interesaban los detalles de la palabra de búsqueda. Luego quería que el scrip continuara eligiendo la lista de items "SendTo" la opción "Add to clipboard". Esto me ha sido facil, pero tengo un prolbema. Cuando lo hago de manera 'manual', al seleccionar "Add to Clipboard", directamente y sin clickar sobre ningún 'botón' me redirecciona a la selección. Pero con el scrip no lo hace, simplemente selecciona la opción y se queda allí.
Incluyo el nuevo código.
gracias!!
| Código: |
#!c:/perl/bin
use Win32::OLE;
use Win32::SAM;
$| = 1;
$Win32::OLE::Warn = 3;
StartIE();
my $segundos = Navigate("http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=omim&term=adprtl1");
print "Tardo $segundos segundos en cargar.\n";
SetCheckBox("uid",1);
SetListBoxItem("SendTo","Add to Clipboard");
exit(1); |
|
|

Vie Abr 21, 2006 9:46 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Lo mismo que antes. Esta página está llena de Javascripts.
Si Sami interactúa con el Internet Explorer y este no se da cuenta de que tiene que activar el evento OnChange del select 'SendTo', entonces Sami no te vale o tienes desactivado el uso de Javascript en el Internet Explorer.
Por fortuna, parece que esas funciones escritas en JavaScript son sencillas, y podrías sustituir la navegación con Sami por peticiones a URLs. Pero no estoy seguro porque no lo he mirado con calma.
Repasa el código fuente de la página web que estás usando para que puedas ver todo el JavaScript que necesitas tener en cuenta para imitar la navegación de un usuario. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|