Page 1 sur 1
[R] Position élément dans page web IE
Posté : sam. 13 déc. 2014 13:00
par jrmy56
Bonjour,
Je souhaiterai faire un clic sur un élément d'une page web Internet Explorer.
L'élément est visible, mais au bas de la page web. Donc cela nécessite de descendre avec la barre de défilement.
Voici le code AutoIT que j'ai essayé :
Code : Tout sélectionner
#include <IE.au3>
Local $oIE = _IEAttach("Page web IE", "title")
Local $oForm = _IEFormGetObjByName($oIE, "form")
Local $oInputFile = _IEFormElementGetObjByName($oForm, "inputFile")
_IEAction($oInputFile, "scrollintoview")
Local $iPositionInputFileX = _IEPropertyGet($oInputFile, "screenx") + Int(_IEPropertyGet($oInputFile, "width")/2)
Local $iPositionInputFileY = _IEPropertyGet($oInputFile, "screeny") + Int(_IEPropertyGet($oInputFile, "height")/2)
MouseClick("left", $iPositionInputFileX, $iPositionInputFileY, 1, 0)
Or, la position retournée par
_IEPropertyGet($oInputFile, "screenx") correspond à la position avant
_IEAction($oInputFile, "scrollintoview")
J'ai essayé aussi de récupérer la page IE, le formulaire et l'input après scrollintoview, sans succès :
Merci d'avance pour votre aide
Re: Position élément dans page web IE
Posté : sam. 13 déc. 2014 13:01
par TommyDDR
Code : Tout sélectionner
#include <IE.au3>
Local $oIE = _IEAttach("Page web IE", "title")
Local $oForm = _IEFormGetObjByName($oIE, "form")
Local $oInputFile = _IEFormElementGetObjByName($oForm, "inputFile")
;_IEAction($oInputFile, "scrollintoview")
_IEAction($oInputFile, "click")
?
Re: Position élément dans page web IE
Posté : sam. 13 déc. 2014 13:15
par jrmy56
Exactement, ce que j'aurai proposé !
Lorsque je passe par le fonction _IEAction($oInputFile, "click").
La fenêtre de sélection de fichier s'ouvre bien. Je sélectionne un fichier et je clique sur Ouvrir.
Mais IE version 9 ne semble rien uploader.
Avec MouseClick, c'est différent ! La simulation du clic gauche de la souris est meilleur. Et le fichier est envoyé !
Seulement, je n'arrive pas récupérer la véritable position de l'élément InputFile.
Re: Position élément dans page web IE
Posté : sam. 13 déc. 2014 13:30
par jrmy56
Je suis preneur, si quelqu'un connait une autre solution pour réaliser un clic gauche comme MouseClick("left").
Le besoin global est d'envoyer un fichier via input type=file.
J'ai déjà essayé cela, sans succès :
Code : Tout sélectionner
_IEAction($oInputFile, "focus")
$oInputFile.fireEvent("onmouseover")
$oInputFile.fireEvent("onmousedown")
$oInputFile.fireEvent("onmouseup")
_IEAction($oInputFile, "click") ; Indispensable pour le clic, mais ne semble pas suffisant pour simuler le clic comme MouseClick
Re: Position élément dans page web IE
Posté : sam. 13 déc. 2014 15:02
par Tlem
Merci de ré-éditer votre message afin de le faire correspondre aux
règles de présentation d'un message.
Et merci aux autres utilisateurs de ne répondre que lorsque cela sera fait.
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 16:33
par A2Energie
Bonjour,
As tu essayé de faire un "focus" puis simplement un send("{SPACE}") ou faire un send("{ENTER}")
Pourrais tu également nous donner la valeur (l'inspection) du bouton en question
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 16:53
par jrmy56
As tu essayé de faire un "focus" puis simplement un send("{SPACE}") ou faire un send("{ENTER}")
Oui, je viens d'essayer quelques combinatoires :
Code : Tout sélectionner
_IEAction($oInputFile, "focus")
Send("{SPACE}") ; Aucune réaction visible
Code : Tout sélectionner
_IEAction($oInputFile, "focus")
Send("{SPACE}")
_IEAction($oInputFile, "click") ; Même problème, ne simule pas correctement le clic
Code : Tout sélectionner
_IEAction($oInputFile, "focus")
Send("{ENTER}") ; Valide le formulaire et charge la page suivante !
Pourrais tu également nous donner la valeur (l'inspection) du bouton en question
C'est un élément HTML, <input type="file" name="inputFile" />, dans un formulaire <form name="form"></form>
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 17:07
par mikell
Tu donnerais pas le lien vers cette page histoire de pouvoir tester ?
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 17:11
par jrmy56
J'explore une autre piste que MouseClick, c'est ControlClick :
Avantage de ControlClick, pas d'interférence lorsque l'on bouge la souris en même temps.
Maintenant, il y a toujours le problème pour récupérer la véritable position de l'élément sur la page web, en tenant compte de la position des barres de défilement horizontale et verticale.
J'aimerai ne pas devoir faire des calculs hasardeux pour trouver la position de l'élément (notamment avec : le zoom de la page, la résolution de l'écran, la position des barres de défilement, etc.).
Dans la documentation de
https://www.autoitscript.com/autoit3/do ... lClick.htm, il y a le paramètre controlID à exploiter, mais je ne sais pas encore comment.
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 17:21
par jrmy56
mikell a écrit :Tu donnerais pas le lien vers cette page histoire de pouvoir tester ?
C'est le site
https://imageshack.com/discover.
Il faut créer un compte et cliquer sur le bouton
UPLOAD et l'input est sur le bouton
BROWSE & UPLOAD
Re: [..] Position élément dans page web IE
Posté : sam. 13 déc. 2014 20:33
par orax
J'ai essayé avec IE11.
Code : Tout sélectionner
#include <IE.au3>
$oIE = _IECreate("https://imageshack.com/discover", 1)
_IENavigate($oIE, "javascript[b]:[/b]document.getElementsByClassName('upload-button').item(0).click(); document.getElementsByClassName('file').item(0).click()", 0)
WinWait("Choisir un fichier à télécharger")
$hChoose = WinGetHandle("Choisir un fichier à télécharger")
ControlSetText($hChoose, "", "Edit1", '"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"')
ControlClick($hChoose, "", "Button1", "primary")
Identifiants pour tester :
Re: [Résolu] Position élément dans page web IE
Posté : sam. 13 déc. 2014 21:16
par jrmy56
La fenêtre de sélection de fichier s'ouvre, le chemin vers le fichier est renseigné et la fenêtre se ferme.
Mais rien ne se passe !
Bizarre, je suppose qu'il y a des différences entre la version 11 et 9 d'Internet Explorer.
Je pense que la véritable solution est de passer sur une version plus récente d'Internet Explorer
Merci beaucoup pour l'aide.