[R] Fenetre popup page internet indétectable.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

[R] Fenetre popup page internet indétectable.

#1

Message 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.
Modifié en dernier par A2Energie le lun. 07 juil. 2014 08:49, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#2

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#3

Message 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"
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#4

Message 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.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#5

Message 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...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#6

Message 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.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Fenetre popup page internet indétectable.

#7

Message 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. :lol: 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [R] Fenetre popup page internet indétectable.

#8

Message par A2Energie »

:lol: 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 ?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Fenetre popup page internet indétectable.

#9

Message 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 ? :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [R] Fenetre popup page internet indétectable.

#10

Message 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)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Fenetre popup page internet indétectable.

#11

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [R] Fenetre popup page internet indétectable.

#12

Message par A2Energie »

:shock: Wahaa sacrée réponse.

Merci Orax, j'ai bien compris comment cela fonctionne.
reste plus qu'a pratiquer.
Encore merci, :)
Répondre