Page 1 sur 1

[R] Contrôler interface web <input type=FILE>

Posté : mar. 29 oct. 2013 16:42
par drakonash
Bonjour,

je suis en train de travailler sur un Autoit qui interagist avec un site web. Il doit remplir un formulaire qui contient un input de type "FILE".
C'est cette input qui me pose problème.

Tout d'abord voici le code du formulaire web :

Code : Tout sélectionner

<form method="post" action="upload" id="uploadform">
<span>
<label>log</label>
<input onchange="chkFileExists(this)" name="upload_file[]" id="upload_file[]" data-title="log" type="file" required="required" />
.......
.......
.......
</span>
</form>
Il est en partise couperé car trop long et les modo m'auraient taperé dessus ^^, je n'ai mis que la partise qui me pose problème.

Mon Autoit consiste à remplir les différents champs de ce formulaire puis de valider le formulaire.
Voci l'Autoit :

Code : Tout sélectionner

    #include <IE.au3>
    local $lfile = "D:\Documents and Settings\XXXXXX\Bureau\xxxx_2012-03-18_05_59_29_235600.txt"
    Local $lserver = "Europe - France"
    local $ltimezone = "(GMT+01:00) Paris"
    local $oIE = _IECreate(http://xxx.com",0,1)
    _IELoadWait($oIE)
    Sleep(150)
    local $oForm = _IEGetObjById($oIE,"uploadform")
    local $ofile = _IEFormElementGetObjByName($oForm, "upload_file[]")
    local $oserver = _IEFormElementGetObjByName($oForm, "server")
    local $otimezone = _IEFormElementGetObjByName($oForm, "timezone")
    local $oButton = _IEGetObjById($oIE, "submit")
;~  _IEFormElementSetValue($ofile, $lfile) ----> Browser security prevents SetValue of TYPE=FILE
    _IEFormElementOptionSelect($oserver,$lserver,1,"byText")
    _IEFormElementOptionSelect($otimezone,$ltimezone,1,"byText")
    _IEAction($ofile,"click")
 
Le problème est que juste après avoir cliqueré sur parcourir (et que la popup Windows me demandant le fichier de log apparaisse) le script se bloque et plus rien ne se passe.

J'ai mis un simple MsgBox après _IEAction($ofile,"click") et il faut attendre que la popup windows se ferme pour que le script continue et affiche la MsgBox.

Ma question est comment puis-je interagir sur cette fameuse popup pour définir le fichier à mettre sur champ input?

D'avance merci.

Re: [...] Controler interface web <input type=FILE>

Posté : jeu. 07 nov. 2013 14:20
par drakonash
Up.

Re: [...] Controler interface web <input type=FILE>

Posté : jeu. 07 nov. 2013 14:33
par timmalos

Re: [...] Controler interface web <input type=FILE>

Posté : jeu. 15 mai 2014 15:04
par DavidRobin33
Bonjour,
J'ai exactement le même problème. Une fois la fenêtre Windows ouverte depuis le bouton "Parcourir" de IE, le script AutoIt est bloqué comme si cette fenêtre était ouverte en "showmodal"... Toutes mes tentatives de contournement ont échouées (Send, ControlSetText, ControlSend, _IEPropertySet).
Donc pas de bonne nouvelle à annoncer (désolé). Je cherche depuis un certain temps maintenant et je ne désespère pas (encore). Si je trouve, je ne manquerai pas de vous l'indiquer ici.

David

Re: [...] Controler interface web <input type=FILE>

Posté : jeu. 15 mai 2014 15:26
par mikell
La seule chose qui fonctionne sur mon XP c'est ça

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IE_Example("form")
$oT = _IEGetObjByName($oIE, 'fileExample')
MouseMove(_IEPropertyGet($oT, "screenx") + _IEPropertyGet($oT, "width") - 10, _
          _IEPropertyGet($oT, "screeny") + _IEPropertyGet($oT, "height")/2, 0)
MouseClick("left")
WinWait("Choisir un fichier à télécharger")
$hChoose = WinGetHandle("Choisir un fichier à télécharger")
ControlSetText($hChoose, "", "Edit1", "C:\AUTOEXEC.BAT")
ControlClick($hChoose, "", "Button2")

[R] Controler interface web <input type=FILE>

Posté : jeu. 15 mai 2014 17:18
par DavidRobin33
Merci mikell, cela fonctionne parfaitement ! :D (sous SEVEN 64 / IE 11)
Je n'avais pas encore essayé cette solution. Vous aviez pourtant déjà donné le lien :oops:
Merci pour ce rappel...

David