Bueno bueno, analizando un poco tu código se ven varios fallos.
Por ejemplo, no te pasa del principio porque no rellenes uno de los campos obligatorios, el de "Provincia". No puedes darle el valor como lo haces tú ya que es un objeto select. Estos objetos no se tratan igual que por ejemplo los text. Tienes que ver sus propiedades, métodos y eventos que posee cada objeto para poder trabajar bien con él. Busca en google que seguro que te salen miles de páginas que te dicen todos estos datos.
Yo he seleccionado un objeto de la lista según si item (la posición del elemento). Esto se hace cogiendo la variable que contiene el objeto select y asignandole a la propiedad selectedindex el valor del item que quiero seleccionar.
Piensa que AutoIt tiene muchas funciones para trabajar con diversos objetos, pero otros muchos los tienes que tratar tú directamente.
Te he quitado algunos _ieloadwait ya que no hacían falta. Muchas de las funciones que cargan páginas y demás tienen la propiedad de no continuar con el script hasta que no se carge la página (wait). Y por defecto suele estar a 1 (que espera). Por eso no hace falta repetir cosas
.
He visto que te has liado un poco con las funciones que trabajan con los formularios. Esas funciones reciben como primer parámetro un objeto form, y no un objeto IE. Ten cuidado con esto.
Al final te he corregido otro fallo que seguro que te iba a costar mucho encontrar la solución
. Es en el paso 4º, en el tratamiento del objeto tipo file (Input type="file".....). Este objeto, llamado "uploadFile1", es un tanto especial. No puedes tratarlo directamente desde la página, ya que está ubicado en un frame (marco) diferente. Por desgracia, no se puede meter el texto del fichero directamente (una protección), con lo cual, lo que tenemos que hacer es cliquearlo para que nos aparezca la ventana de windows de cargar archivos.
A partir de aquí te lo dejo. Una forma muy facil de introducir el archivo es, si sabes exactamente donde está, mandar el texto al control Edit1 de esta ventana con la función controlsettext, para luego cliquear el boton "Abrir" que es el Button2. Esto se hace con la función controlclick. Por cierto, la clase de la ventana es #32770.
Si quieres seleccionar un archivo de la lista, tendrás que atacar el control listview (SysListView321). Para hacer esto hay muchas funciones en AutoIt. Tienes por ejemplo la función controllistview con muchas posibilidades. Para cosas más complicadas, tienes una udf. Mira en la ayuda las funciones que empiezan por _GuiCtrlListView_........ .
Si tienes que automatizar otros botones de esta ventana (como por ejemplo el de "Subir nivel"), mira su clase, nombre, etc y utiliza las funciones que empiezan por Control..... .
MUY IMPORTANTE: Para mirar todas las propiedades de una ventana y sus controles, utiliza el programa espia suplementario que trae AutoIt llamado "Autoit Window Info".
Por supuesto, todo este rollo te lo evitarías si no tuvieses que añadir ninguna imagen. Entonces solamente tendrías que pulsar la imagen que pone "Publicar sin foto". Esto ya he visto que sabes hacerlo
.
Y como no he pasado de ese paso no se lo que viene. Supongo que una página web que te dice si ha sido publicada o no por algún problema. Eso también se puede tratar facilmente viendo el texto, html, url, título, etc de la página. A elegir.
Mira en la ayuda todo lo que te comento.
Código: Seleccionar todo
#include <ie.au3>
;Crear una instancia de Internet Explorer
$oIE = _IECreate ("http://www.milanuncios.com/lugar/?cat=245")
WinWaitActive ("MILANUNCIOS.com - Publicar anuncios (paso 2) - Windows Internet Explorer")
WinSetState ("MILANUNCIOS.com - Publicar anuncios (paso 2) - Windows Internet Explorer","",@SW_MAXIMIZE)
;Obtener el objeto "p"
$op= _IEGetObjByName ($oIE, "p")
;Poner texto en el objeto "p" obtenido anteriormente
$op.selectedindex=3 ;es el item número 3 de la lista despegable (Alicante)
_IEFormImageClick ($oIE, "http://www.milanuncios.com/siguiente.gif")
;crea el objeto de los formularios
$otitulo=_IEGetObjByName ($oIE, "titulo")
$otexto=_IEGetObjByName ($oIE, "texto")
$onombre=_IEGetObjByName ($oIE, "nombre")
$oemial=_IEGetObjByName ($oIE, "email")
$orepemail=_IEGetObjByName ($oIE, "repemail")
$otelefono1=_IEGetObjByName ($oIE, "telefono1")
$otelefono2=_IEGetObjByName ($oIE, "telefono2")
;rellena los campos
_IEFormElementSetValue ($otitulo, "el titulo que sea")
_IEFormElementSetValue ($otexto, "aqui tiene que ir una descripción no demasiado corta, porque si no la página no acepta el texto y no puede continuar a la siguiente. Por esta causa estoy escribiendo todo esto")
_IEFormElementSetValue ($onombre, "el nombre")
_IEFormElementSetValue ($oemial, "[email protected]")
_IEFormElementSetValue ($orepemail, "[email protected]")
_IEFormElementSetValue ($otelefono1, "123456789")
_IEFormElementSetValue ($otelefono2, "234567890")
_IEFormImageClick ($oIE, "http://www.milanuncios.com/publicar.gif")
;pulsa el boton
$iFrame = _IEFrameGetCollection ($oIE,0) ;obtenemos el primer frame que es donde está el control file
$oboton=_IEGetObjByName($iFrame, "uploadFile1")
$oboton.click ;cliquea el botón "Examinar" del control file.
;~ _IELoadWait ($oIE)
;~ _IELinkClickByText($oIE, "[>] FINALIZAR PUBLICACIÓN")
Intenta hacer algo y si tienes algún problema postealo.
Saludos.