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 :

Code : Tout sélectionner

ControlClick("Page web IE", "", "", "left", 1, 350, 250)
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 :

Code : Tout sélectionner

uiruinriunuirnr
uiruinriunuirnruiruinriunuirnr

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.