Página 1 de 1

click en botón

Publicado: 02 Oct 2011, 15:15
por blasa
Hola a todos, este es el primer post sobre AutoIt que hago en este foro...y espero que no se os haga pesao..pero es sobre...click en un botón!

Antes de nada deciros que me he leído todos los post con "onclick", "send javascript" etc.. y en webs "normales" no he tenido problemas, pero esta que es dhtml, no encuentro la forma. Lo peor es que no puedo poner el enlace porque se entra con contraseña y es cosa del trabajo... :smt010

Por lo que llevo aprendido con Send("javasr...."&ENTER) si que consigo que me haga click, pero sólo en una parte de la web, como ahora os explicaré, y además depende de dónde previamente haya yo pulsado antes, :smt017

Yo creo que la web tiene varios frames, y según debugbar el marco principal de la web tiene este código:

<FRAMESET id=mainFrameset frameSpacing=3 name=mainFrameset borderColor=#f5f8fa cols=190,* frameBorder=1 onload=OnUuconf();>
<FRAME src="/html/blank.html" frameBorder=0 name=AbxMenu marginWidth=0 scrolling=no>
<FRAMESET frameSpacing=3 borderColor=#f5f8fa frameBorder=1 onload=OnUuconf(); rows=64,*,22,0,0>
<FRAME marginHeight=0 src="/html/blank.html" frameBorder=0 name=AbxToolBar marginWidth=0 scrolling=no>
<FRAME onreadystatechange=evento=event; marginHeight=0 src="/cgi-bin/abnetcl/X9092/ID6a42594b/NT1?ACC=105&TB=3001" frameBorder=0 name=AbxMain marginWidth=0>
<FRAME marginHeight=0 src="/html/blank.html" frameBorder=0 name=AbxWin marginWidth=0 scrolling=no>
<FRAME marginHeight=0 src="" frameBorder=0 name=AbxNo marginWidth=0 scrolling=no>
<FRAME marginHeight=0 src="/html/blanksign.html" frameBorder=0 name=AbxSigned marginWidth=0 scrolling=no>
</FRAMESET>
</FRAMESET>

En uno de estos frames, tengo tres botones y cada uno despliega un menu con más botones...Bueno pues uno de ellos según debugbar tiene esto dentro:

<A onkeydown=keyMenuMain(32,this); title=Catálogo ondblclick="CallMenu('56','1')" onclick="ExpColl2('C')" href="JavaScript:void(null);">Catálogo</A>

Intento usar esto:

Send("javascript:ExpColl2('C')"&"{ENTER}")

Y funciona, pero sólo si antes lo pulso yo, con lo que se despliega el menú(con otros tres botoncitos), lo vuelvo a pulsar, se repliega el menú y llamo al programa. Lo mismo pasa con los demás, por ejemplo debajo de el anterior hay otro:

<A onkeydown=keyMenuMain(32,this); title=Circulación ondblclick="CallMenu('38','1')" onclick="ExpColl2('P')" href="JavaScript:void(null);">Circulación</A>

Y si uso esto (después de haber visto con alegría como me pulsa el otro):

Send("javascript:ExpColl2('p')"&"{ENTER}")

Me pulsa....el mismo botón de antes! Para que se pulse el que yo quiero, igualmente, tengo que pulsar el botón, volverlo a pulsar, y entonces arrancar el programa, para que se pulse.

Os dejo más código fuente de esa parte de la web. Aquí es donde yo creo se crea el menú de tres botones etc..:

<DIV style="WIDTH: 167px; WHITE-SPACE: nowrap; HEIGHT: 566px; OVERFLOW: auto" id=idDiv><TABLE cellSpacing=1 cellPadding=0 width="100%">
<SCRIPT>
fdi(1,1,"C","Boton1","56",1);
ftd(10,56,"Subbotón de 1");
ftd(10,1021,"Otro Subbotón de 1");
ftd(10,1022,"Y otro Subbotón de 1");
......(más botones)
</SCRIPT>
  • asdfaf

<TBODY>
<TR>
<TD class=clsLink1 onmouseover=overM(this,1); onmouseout=outM(this,1);>
<IMG style="WIDTH: 1px; HEIGHT: 10px" src="/absysnet/imag/vacia1.gif">
<IMG id=C onclick=ExpColl(this) src="/imag/mas.gif"> <A onkeydown=keyMenuMain(32,this); title=Boton1 ondblclick="CallMenu('56','1')" onclick="ExpColl2('C')" href="JavaScript:void(null);">Boton1</A>

....más botones

Tampoco entiendo porque no puedo sacar la fuente de los frames. Me dice que hay 6, pero salca 0 en el MSgbox de Info:

$oFrame = _IEFrameGetCollection ($o_IE)
$iNumFrames = @extended
MsgBox(0,"número frames",$iNumFrames)
For $i = 0 to ($iNumFrames - 1)
$oFrame = _IEFrameGetCollection ($o_IE, $i)
;_IENavigate($oFrame,"javascript:handMNL:ShowMsg()"&"{ENTER}") ;también intento esto pero nada.
MsgBox(0, "Fuente de frame es:", _IEDocReadHTML ($oFrame))

Next

Buf...Tengo más partes de la web que no entiendo..pero para empezar si hay sugerencias con esto se las agradezco.

Re: click en botón

Publicado: 02 Oct 2011, 22:01
por Chefito
Mmmmm....sin la página y el no poder probar cosas esto resulta mucho más dificil. Siempre puedes guardar la página completa y colgarla (con la que te interesa trabajar).

Recuerda que siempre puedes ir directo a la página que te interesa mirando el src de los frames y montando la página completa. Te lo digo para ganar algo de velocidad y como consejo. Ejemplo:

Código: Seleccionar todo

_iecreate("www.elprincipio_de_la_pagina.com/html/blanksign.html")
Logicamente tienes que sutituir www.elprincipio_de_la_pagina.com por la dirección del principio de tu página. Si te das cuenta nunca cambiará :smt002 .

Respecto a lo de los javascript, has probado ha hacerlo así:

Código: Seleccionar todo

_ienavigate($oframe,"javascript:ExpColl2('C')")
Si te da problemas ponle el punto y coma al final:

Código: Seleccionar todo

_ienavigate($oframe,"javascript:ExpColl2('C');")
Si esto sigue sin funcionarte, piensa que es un enlace (objeto <A.... ). La udf IE trae funciones para trabajar con enlaces, las que empiezan por _ielink. Puede que a tí te sirva esto:

Código: Seleccionar todo

_IELinkClickByText($oframe,"Circulación")
Esto lo que hace es buscar el link que tiene el texto "Circulación" y lo cliquea. Y como vemos en tu código, si lo cliqueas una vez se ejecuta lo que quieres (onclick="ExpColl2('C')").
Llegado el muy muy muy difícil caso que ni eso te funcione, prueba las otras dos funciones: _IELinkClickByIndex, _IELinkGetCollection. Seguro que algo podrás hacer :smt002 . Miralas en la ayuda y sus ejemplos.

Decirte que hay otras formas más complicadas como por ejemplo crear un objeto oculto en la página y ponerle en la propiedad onclick el javascript que quieres que se ejecute, para tu forzar su click desde autoit y que se ejecute (las tengo respondidas por el foro), pero casi seguro que así lo puedes solucionar.

También puedes trabajar directamente con los objetos dhtml desde autoit, aunque aquí ya tienes que saber dhtml logicamente :smt003 .

Saludos.

Re: click en botón

Publicado: 03 Oct 2011, 08:46
por blasa
Holaaa..muchas gracias por responder..así da gusto..efectivamente no sé cómo rayos lo probaría antes pero el _IELinkByText cómo me has puesto tú ha funcionado. :smt038
Vaya cabeza tengo...

y con este otro botón/imagen

<IMG id=IMG_SH class=handMNL title="Oculta todo" onclick=showMsg(); src="/imag/hidde.gif">


que tampoco podía (e iba a ser otra pregunta) por si acaso alguien le pasa algo así, resulta que en la web hay 6 frames, algunos de ellos con subframes, y este botón estaba en el frame 2 y dentro de uno de los 4 subframes que tiene. Por eso no podia pulsarlo (digo yo) con

_IEImgClick($oframe,....,

Para ver los subframes hice:

For $i=0 To 5 Step 1
$oframe = _IEFrameGetCollection ($o_IE, $i)
_IEFrameGetCollection($oframe)
MsgBox(0,"frame:" & $i,"Dentro de este hay otros frames: " & @extended & @CR & _IEDocReadHTML($oframe) )
Next

Lo dicho, hasta la próxima! :smt024