[..] Cliquer sur un bouton

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pscmoye
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 10 févr. 2011 18:38
Status : Hors ligne

[..] Cliquer sur un bouton

#1

Message par pscmoye »

Bonjour,

Je me résous à demander de l'aide une fois de plus, car je n'arrive pas à mettre en oeuvre les différents exemples vers lesquels le forum a eu la gentillesse de m'envoyer.
Il s'agit de cliquer sur un bouton lié à une application "intranet" professionnelle sous IE.
1 mettre en oeuvre UDF IE3
2 utiliser "_IEAttach" (je pense) pour se connecter à ma page en cours
3 cliquer sur le bouton "Supprimer" autrement que par x et y car il n'est pas toujours au même endroit.
Vous trouverez ci-joint un extrait du code de la page en question, si cela peut vous aider.

Merci de votre aide, car je commence vraiment à désespérer.
Fichiers joints
Le code correspondant.pdf
(50.44 Kio) Téléchargé 182 fois
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#2

Message par scorp84 »

Bonjour pscmoye,

Quand tu créés ton message, il y a la balise code qui te permet d'incorporer ton code pour que l'on puisse le copier/coller dans un fichier autoit pour le tester.

C'est beaucoup plus simple que le PDF pour ceux qui voudront t'aider ;-)

Amicalement.

BM
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#3

Message par timmalos »

Ou en es tu dans tes essais? As tu deja essayé de commencer par _IEAttach sur ta page? Cela marche t'il? Ensuite as tu essayé un _IeImgClick()?
pscmoye
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 10 févr. 2011 18:38
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#4

Message par pscmoye »

En réponse à la question de Timmalos, j'ai bien essayé "_IEAttach" mais déjà à ce niveau j'ai un message d'erreur "$_IEStatus_NoMatch". Je comprends donc que j'ai un problème au niveau de la liaison avec ma page IE.
Concernant "_IeImgClick()", je n'ai pas encore testé. Je suis bloqué en amont.
Pour la remarque de "Scorp84" par rapport au code, désolé, je ne pensais pas que le code html en lui-même vous serait utile.
J'en suis donc à :

Code : Tout sélectionner

#include <IE.au3>
$page = _IEAttach ("M:\bt.php.htm", "embedded")
$oForm = _IEFormGetCollection ($page,0)
$oSupprimer = _IEFormElementGetObjByName ($oForm, "Supprimer")
_IEAction($oSupprimer,"click")
 
Avec les message d'erreur:

--> IE.au3 V2.4-0 Warning from function _IEAttach, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Error from function _IEFormGetCollection, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidDataType
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#5

Message par timmalos »

Si votre navigateur n'est pas ouvert, essayez plutot _IECreate()
pscmoye
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 10 févr. 2011 18:38
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#6

Message par pscmoye »

Bonjour,

Mon navigateur est bien ouvert puisque le but est de supprimer des "affaires" (genres de projets) en cascade.
A l'aide d'un tableau de variables (pour l'instant) je saisis le N° dans une zone de texte, je clique sur "Supprimer", je valide et je passe à la suivante.
Ceci dit, je peux peut-être passer par IECreate à la première ouverture de l'appli.
Je vais tester _ieimgClick(), mais vu les résultats obtenus jusqu'à maintenant, c'est pas gagné.
Il me restera le problème de la sélection de la zone de texte autrement que par x et y, pour saisir mon numéro.

Je programme en vba depuis plus de 10 ans, mais là j'ai un blocage. Ça doit-être l'âge.
Merci pour votre aide.
pscmoye
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 10 févr. 2011 18:38
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#7

Message par pscmoye »

J'y suis presque, sauf que je n'arrive pas à remettre le focus sur ma fenêtre de confirmation et donc mon controlclick 'tombe à l'eau'.

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IEAttach ("XXXXX - Windows Internet Explorer", "embedded")
;J'attache ma fenêtre active):ok
sleep (2000)
$oForm = _IEFormGetObjByName ($oIE,0)
$oText = _IEFormElementGetObjByName ($oForm, "rechercheRapide")
;Je saisis le N° d'affaire dans la zone 'rechercheRapide':ok
_IEFormElementSetValue ($oText, "111111")
sleep (2000)
;Je clique sur 'Supprimer':ok
_IEImgClick ($oIE, "Supprimer", "alt")
;J'attends la fenêtre de confirmation:problème
WinWait("Message de la page Web","")
;Je clique sur 'Confirmez':problème
ControlClick("Message de la page Web","",1)
 
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#8

Message par timmalos »

Au lieu d'un WinWait et ControlClick, je crois comprendre que votre application est en javascript, vous pouvez lire le DOM avec _IEDOCReadHtml(), faire une recherche dans celui ci pour voir si il contient la fenetre de confirmation (qui n'apparait dans le DOM que lorsque elle apparait dans l'ecran) afin de pouvoir simuler son click avec un simple _IEAction("click")
pscmoye
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 10 févr. 2011 18:38
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#9

Message par pscmoye »

Bonjour et merci pour l’intérêt que vous portez à mon problème.
J'ai effectivement la possibilité de lire le code html en accédant à la source de la page. Si j'ai bien compris, c'est ce que permet la fonction "_IEDOCReadHtml()".
En revanche j'ai un peu de mal à mettre à l'exécution l'emploi de _IEAction("click") en fonction de ce code.
Vous trouverez ci-joint l'extrait de code html en question. Peut-être auriez-vous un exemple d'utilisation à me soumettre.
Merci par avance.

Code : Tout sélectionner

<img class="border0" src="bt.php_fichiers/boutG_supprimer.png" 
onclick="if ( confirm( 'Confirmez la suppression' ) ) 
{ValiderForm('supprimer');}" onmouseover="this.style.cursor='hand';" 
alt="Supprimer">
 
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Cliquer sur un bouton

#10

Message par timmalos »

Vous aviez en fait raison et je vous ai guidé sur une mauvaise piste, voilà la marche a suivre:

Code : Tout sélectionner

; *******************************************************
; Example 2 - Same as Example 1, except instead of using click, give the element focus
;               and then use ControlSend to send Enter.  Use this technique when the
;               browser-side scripting associated with a click action prevents control
;               from being automatically returned to your code.
; *******************************************************
;
#include <IE.au3>
$oIE = _IE_Example ("form")
$oSubmit = _IEGetObjByName ($oIE, "submitExample")
$hwnd = _IEPropertyGet($oIE, "hwnd")
_IEAction ($oSubmit, "focus")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

; Wait for Alert window, then click on OK
WinWait("Windows Internet Explorer", "ExampleFormSubmitted")
ControlClick("Windows Internet Explorer", "ExampleFormSubmitted", "[CLASS:Button; TEXT:OK; Instance:1;]")
_IELoadWait ($oIE)
Répondre