Bonjour,
Alors voilas je cherche a manipuler la page de http://depositfiles.com/ et j'ai un souci avec le input pour sélectionné le fichier.
J'ai fait un tour dans la recherche et j'ai trouver sa :
$oInputs = _IETagNameGetCollection ($oIE, "input")
For $oInput In $oInputs
If $oInput.type == "file" Then _IEPropertySet($oInput, "innertext", "lechemaindufichier")
Next
Bon le souci c'est que ça ne fonctionne pas chez moi après modification, donc la je sèche j'ai essayer pas mal de façons avant de venir demander de l'aide ...
Modifié en dernier par 123456789 le mar. 13 mars 2012 18:14, modifié 2 fois.
Pour ma part, je vais rajouter plus de précision dans la première ligne du template, puisque visiblement cela ne vous choque pas d'avoir un forum dont tous les messages sont écrit de la même manière !!!
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Case $upload
$read_list_upload = GUICtrlRead($list_upload)
If ($read_list_upload <> "") Then
$oIE = _IECreate("http://depositfiles.com/")
_IELoadWait ($oIE)
$obj_form = _IEFormGetCollection($oIE, 0)
$obj_login = _IEFormElementGetCollection($obj_form, 1)
$obj_mdp = _IEFormElementGetCollection($obj_form, 2)
_IEFormElementSetValue($obj_login, "pseudo")
_IEFormElementSetValue($obj_mdp, "pass")
_IEFormSubmit ($obj_form)
_IELoadWait($oIE)
$oInput = _IEGetObjByName ( $oIE, "files")
_IEAction ($oInput, "focus")
ControlSend ("Deposit Files", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "lienfichier")
Sleep(2000)
$oInputs = _IETagNameGetCollection ($oIE, "input")
For $oInput In $oInputs
If $oInput.type == "submit" Then _IEAction ($oInput, "click")
Next
Else
MsgBox(48, "Erreur", "Veuillez Ajouter un fichier !")
EndIf
EndSwitch
WEnd
Je pense avoir correctement adapté votre exemple donc cela doit venir du code sur la page créer il me met comme message "Select file from your local computer or remote server" donc je pense qu'il me détecte pas ou n'arrive pas a envoyer la variable $file j'ai donc changer et mis "lien de mon fichier" et la toujours le même message
Si non j'aurais voulu savoir ou avez vous récupéré cette partie :
Hum je vois que tu passes par une inscription avec pseudo/password, qui doit te mener sur une autre page
Cette autre page, j'ai pas pu la tester et il est possible que le code soit différent, le script que j'ai mis fonctionne sur la page de départ de depositfiles (user non enregistré)
Pour vérifier faudrait voir le code-source de cette page
Le point commun doit être ce fichu input 'file' qui résiste à l'injection de texte, et pour lequel on ne peut utiliser qu'un ControlSend (ou peut-être un ControlSetText)
C'est pour ça que j'utilise [CLASS:Internet Explorer_Server; INSTANCE:1], qui est tout simplement l'identité en tant que controle de la fenêtre IE ouverte (merci Au3info.exe)
Pour la même raison, pour que ça fonctionne il faut d'abord donner le focus à ce foutu input avant d'écrire dedans
Le Sleep(2000) c'est pour laisser le temps à l'input de digérer ce qu'on y écrit avant le clic final, pour mon test ça suffisait mais il faut peut-être modifier la valeur
" L'échec est le fondement de la réussite. " (Lao-Tseu ) " Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Voilas le HTML quand on est connecter, j'ai essayer les 2 possibilités (connecter ou non) le souci été le même, de plus dans AutoIt il me disais qui avais un souci avec le "WEnd".
Bon, on est trompé par la simplicité apparente du code source de la page
Mais pour résumer, disons que tous les évènements sur la page (écriture, comportement de la souris...) sont interceptés par des fonctions javascript elles-mêmes installées par un .swf et et gérées par un .js chargés dans le cache du navigateur
Donc manquant de motivation pour y passer des heures, je passe la main ^^