Page 1 sur 1
[R] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 17:57
par A2Energie
Bonjour amis Autoitiens,
J'ai un problème que je ne parviens pas à régler.
Lors du déroulement de mon script, il arrive que sur une page internet, une fenêtre Popup apparaisse.
Il ne s'agit pas d'une fenetre publicitaire mais plutôt une fenetre d'erreur.
Je précise que j'utilise _IE avec internet explorer.
Les problèmes étant les suivants :
- Un winexists ne fonctionne pas (en effet la fenêtre popup se situe à l'intérieure de la fenêtre internet).
- J'ai scanné la page avec WinGetText mais le popup n'y apparait pas, ni avec WinGetTitle.
- J'ai réussi à trouver l'id de la fenetre Popup en inspectant la page internet. Cependant, il semblerait que rien ne change hormis la balise <Style> de l'élément. Mais malheureusement un _IEFormElementGetStyle n'existe pas.
Ci dessous l'élement (si besoin) :
Code : Tout sélectionner
<div id="programmaticModalPopupBehavior_foregroundElement" style="position: absolute; z-index: 100001; left: 335px; top: 306px;"><div id="ctl00_BodyABC_programmaticPopup" class="modalPopup2" style="position: relative; z-index: 2;">
<div id="ctl00_BodyABC_programmaticPopupDragHandle" class="modalTitle">
Erreur de saisie
</div>
<p></p>Pas de données disponibles pour les dates choisies.<p></p>
<p align="center"><a id="hideModalPopupViaClientButton" href="#">Fermer cette fenêtre</a></p>
<br>
</div><div id="ctl00_BodyABC_programmaticPopup_DropShadow" style="position: absolute; left: 5px; top: 5px; width: 372px; height: 131px; visibility: visible; z-index: 1; background-color: black;"></div></div>
Merci pour votre aide,
Et merci aussi pour toutes les aides que vous fournissez avec ce forum.
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 20:03
par orax
Le lien pour fermer la fenêtre popup a un identifiant donc il n'y a qu'à simuler un clic dessus si tu souhaites la fermer.
Code : Tout sélectionner
$id_hideModalPopupViaClientButton = _IEGetObjById($ie, 'hideModalPopupViaClientButton')
_IEAction($id_hideModalPopupViaClientButton, "click")
La fenêtre popup n'en n'est pas vraiment une en fait. Dans la page, il y a un DIV id="programmaticModalPopupBehavior_foregroundElement" avec le style "display: none". Ce DIV contient l'espèce de fenêtre popup mais il est juste caché (display: none). Tout ça pour dire que cette espèce de fenêtre qui apparaît est bien sur la même page.
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 20:19
par jguinch
Du coup, tu peux essayer d'appliquer le style display=none directement sur le DIV :
Code : Tout sélectionner
$oMessage = _IEGetObjById($oIE, "programmaticModalPopupBehavior_foregroundElement")
$oMessage.style.display = "none"
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 21:05
par A2Energie
Merci pour vos réponses rapides,
Cependant, cette fenêtre apparaît à un moment où je dois attendre un téléchargement avec une boucle.
En gros, c'est soit j'ai le téléchargement qui s'opère, et donc j'attends la fin du DL.
Soit j'ai cette fenêtre qui s'affiche et donc inutile d'attendre le DL.
Donc j'ai besoin de savoir si la fenêtre est présente ou non.
Comme un If winexists() par exemple
Le problème étant que Winexists ne fonctionne pas sur cette fenêtre.
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 22:00
par jguinch
Tu as simplement besoin de connaitre la propriété d'un objet de type DIV.
Orax suppose (tout comme moi) que la page utilise la propriété display=none pour masquer la boîte, mais ça peut être une autre propriété (visibility par ex).
Sinon, il faut que tu cherches comment faire pour savoir si le texte de la boite de dialogue "Fermer cette fenêtre" apparaît à l'écran.
Sans plus de code source, on ne peut pas faire grand-chose...
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 22:23
par A2Energie
Bonjour,
Ok je pense avoir compris,
Désolé pour mon manque de compréhension, mais les termes sont par fois difficiles à interpréter.
En gros il faut utiliser la propriété _IEPropertyGet($oIE, "les essayer un par un")
Jusqu'à ce que je trouve la propriété qui diffère ?
Je tenterais cette opération demain,
Mais j'avais déjà testé "visible" et "title"
Merci pour votre aide.
Re: [..] Fenetre popup page internet indétectable.
Posté : dim. 06 juil. 2014 23:41
par orax
jguinch a écrit :Orax suppose (tout comme moi) que la page utilise la propriété display=none pour masquer la boîte, mais ça peut être une autre propriété (visibility par ex).
Je fait un peu plus que supposer et je triche puisque je sais de quel site il parle.

J'avais donc simplement regardé le code sur le site. Par contre il est vrai qu'il y a aussi "visibility" que je n'avais pas vu.
J'ai fait des essais avec le code ci-dessous.
Il faut se rendre sur la page avant de lancer le script.
Code : Tout sélectionner
#include <IE.au3>
; IE doit déjà avoir la page en question ouverte.
$ie = _IEAttach('Téléchargement', 'embedded')
While 1
Sleep(250)
; Attends le chargement complet de la page. Important.
_IELoadWait($ie)
; Vérifie que l'URL active est la bonne.
If _IEPropertyGet($ie, "locationurl") <> "http://www.***.com/***/***" Then ContinueLoop
; Récupère le style display de la DIV via le DOM.
If $ie.document.getElementById("programmaticModalPopupBehavior_foregroundElement").style.display = "none" Then
ConsoleWrite("La fenêtre popup n'est pas affichée !" & @LF)
Else
ConsoleWriteError("Catastrophe !!!" & @LF)
EndIf
WEnd
Re: [R] Fenetre popup page internet indétectable.
Posté : lun. 07 juil. 2014 08:55
par A2Energie

Tricheur,
Merci pour ton aide,
Je me rends compte que je n'utilise qu'une partie de notre ami Autoit,
Malgrés le faite que j'utilise déjà pour Excel les quelquechose
. quelquechose . ...
Je comprends aujourd'hui leurs importances,
Les fonctions sont inventoriées et expliquées, les maccros idem, mais ces "points", je ne voie pas ou chercher.
D’ailleurs je n'en connais pas le nom, propriétés, arguments ...?
Est il possible de m'orienter ?
Re: [R] Fenetre popup page internet indétectable.
Posté : lun. 07 juil. 2014 09:20
par jguinch
C'est simple : tu ouvres la doc, tu parcours un peu toutes les fonctions et tu testes les exemples, en essayant au passage de comprendre le but et fonctionnement de chaque fonction.
Pour les macros, c'est plus simple puisque, il suffit juste de regarder à quoi elles servent.
Maintenant, pour le fait que Orax est un tricheur, j'aimerais savoir si ce qu'on vient de t'aider à faire est vraiment légal ? Qui est le tricheur finalement ?

Re: [R] Fenetre popup page internet indétectable.
Posté : lun. 07 juil. 2014 09:29
par A2Energie
Bonjour jguinchn,
Oui, je te rassure c'est totalement légal juste automatisé car un peu long et répétitif.
Pour les fonctions et maccro, oui je fais ainsi et l'aide autoit est très bien faite.
Ma réflexion portait plus sur ces quelquechose . quelquechose (les points)
Re: [R] Fenetre popup page internet indétectable.
Posté : lun. 07 juil. 2014 17:29
par orax
Dans le code de l'UDF, on voit que _IECreate() crée une référence sur un objet COM "InternetExplorer.Application" :
Local $oObject = ObjCreate("InternetExplorer.Application")
Donc en recherchant "InternetExplorer.Application" dans un moteur de recherche ou directement sur MSDN on arrive sur :
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
où se trouve toutes les méthodes, propriétés, … de l'objet.
Méthode navigate() par exemple, que l'on retrouve dans la fonction _IENavigate().
Note : en gros, une méthode c'est une fonction qui fait partie d'un objet.
Concernant le
document.getElementById("programmaticModalPopupBehavior_foregroundElement").style.display, ça fait partie du DOM :
https://developer.mozilla.org/fr/docs/D ... lementById
Basic DOM Reference
https://developer.mozilla.org/fr/docs/R ... _DOM_Gecko
Les exemples sont en Javascript mais ça n'a pas d'importance.
Les navigateurs ont généralement un débogueur intégré accessible via la touche F12 (il y a aussi Firebug par exemble) pour voir, entre autre, le DOM de la page.
Re: [R] Fenetre popup page internet indétectable.
Posté : lun. 07 juil. 2014 23:28
par A2Energie

Wahaa sacrée réponse.
Merci Orax, j'ai bien compris comment cela fonctionne.
reste plus qu'a pratiquer.
Encore merci,
