dacu escribió:_IELinkClickByText ($imperion1,"Mejorar edificio")
Esto no creo que te funcione, ya que lo que debes poner en el segundo parámetro de la función es el texto de la etiqueta <a> (del link) y tu le pones el texto de la propiedad title de esa etiqueta.
dacu escribió:el comando "_IELinkClickByIndex" lo e probado en google, y si segun el numero que ponga clica en un boton distinto lo que no encuentro es el por que, a ver si me explico no encuentro la referencia al "numero" y al boton que clica luego.
Te voy a explicar antes un poco como va lo de la colección de objetos en una página (también es aplicable a cualquier lado....ejemplo una ventana). Los objetos tienen un orden en la página. Este número de orden es el index. La función _IELinkClickByIndex te va a cliquear el link que le indiques respecto al ese orden que tiene una página web en particular. En este caso recoge el orden de los objetos links, ignorando los demás.
Un ejemplo: Si tienes 10 links en una web, y le pones que te cliquee el 5º link (la numeración de index empieza a partir de 0. Por eso podrías referenciar desde el 0 hasta el 9....los 10 links que tiene la página) deberías de poner _IELinkClickByIndex ($oIE, 4). Debes de encontrar el index que te interesa cliquear. Como? pues podrías hacerlo por prueba y error (ir probando tú hasta que lo encuentres) o haciendo un pequeño script para indicarte. En este último caso entraría la función _IELinkGetCollection.
dacu escribió:el comando "_IELinkGetCollection" me saca todos los ".href" "src" o cualquier cosa de esas en modo texto, aunque lo cambie y las meta en una funcion tampoco se hacer nada con este modo.
La función _IELinkGetCollection te devuelve todos los objetos links en un array que contenga una página web. Después puedes hacer lo que quieras con estos objetos. En el ejemplo saca esas dos propiedades que muestras, pero se puede hacer lo que nosotros le digamos.
Puede que tu código podría ser algo así:
Código: Seleccionar todo
#include <IE.au3>
$imperion = _IECreate ("http://xxxxxx/", 0,1)
$usuario = _IEGetObjByName ($imperion, "playerName")
$pass = _IEGetObjByName ($imperion, "playerPw")
$boton = _IEGetObjByName ($imperion, "loginSubmit")
_IEDocInsertText ($usuario, "xxxxx")
_IEDocInsertText ($pass , "xxxxxx")
_IEAction ($boton, "click")
_IELoadWait ($imperion)
$sMyString = "Mejorar edificio"
$oLinks = _IELinkGetCollection($imperion)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "title")
If $sLinkText = $sMyString Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
Lo que le digo aquí es que recorra todos los links de la web hasta que encuentre el que tiene la propiedad title="Mejorar edificio" y lo cliquee.
Si por alguna razón te falla con esta propiedad intentalo con otra. Ejemplo: href, class o incluso como viene en el segundo ejemplo de la ayuda de la función _IELinkClickByText (cambiando $sMyString por algo de texto de tu link), ya que esto está copiado de allí.
Saludos.