_IEDocReadHTML ne traite pas la page completement avant de renvoyer le HTML

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
empika
Niveau 1
Niveau 1
Messages : 1
Enregistré le : jeu. 28 mars 2019 09:41
Status : Hors ligne

_IEDocReadHTML ne traite pas la page completement avant de renvoyer le HTML

#1

Message par empika »

Bonjour,

Je travaille sur l'automatisation du remplissage d'un formulaire web. Normalement, un classique avec les fonctions _IEFormGetCollection et associées.

Mais là, impossible. Après avoir creusé et testé, je pense avoir trouvé le coeur du problème ( mais pas pas sa solution :-( ). La page comprends des renvois vers des scripts .aspx et le HTML renvoyé ou traité par les fonctions _IE semble être celui d'avant l'exécution de ces .aspx.

Démonstration.
#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate("http://appliweb2.fr.mycompany.com/wfgen/") ; URL slightly modified for confidentiality
Local $sHTML = _IEDocReadHTML($oIE)
MsgBox($MB_SYSTEMMODAL, "Document Source", $sHTML)
voici le retour, qui tient en qq lignes
<html><head><META content="IE=11.0000" http-equiv="X-UA-Compatible">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <link href="./favicon.png" rel="icon" type="image/png">
   <title>WorkflowGen - Portail de workflow</title></head>
   <frameset rows="*" border="0" frameborder="no" framespacing="0">
      <frame name="WFGEN" src="show.aspx?QUERY=CONTEXT&REQUEST_QUERY=WELCOME&NO_REDIR=Y" marginwidth="0" marginheight="0" noresize="" scrolling="no">
   </frameset>
</html>
L'élément de frame WFGEN qui pointe vers show.aspx n'est pas exécuté, donc impossible de travailler avec AutoIt directement sur les éléments du formulaire qui est généré par ce script . Pourtant la page affichée dans le IE lancé par AutoIt est correcte. Sur la page une fois affichée, avec un ViewSource dans IE, on retrouve bien toutes les balises attendues. je ne copie pas tout, mais pour exemple, juste en extrait, le bouton de validation du formulaire est clairement identifié.
         <div class="ButtonSet">
            <input type="submit" name="SubmitButton" value="Envoyer" onclick="javascript:return ValidatePageProcessing();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("SubmitButton", "", true, "WFGENPage", "", false, false))" id="SubmitButton" class="SubmitButton" />
         </div>
AU3Info montre que la page finale est un unique Control , donc accessible via ControlClick , mais le positionnement des champs est trop complexe et changeant pour pouvoir s'y attaquer à coup de ControlClick + coordonées (et encore moins de Mouseclick).
>>>> Control <<<<
Class:   Internet Explorer_Server
Instance:   1
ClassnameNN:   Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]

J'ai essayé de laisser du temps avec un sleep, d'ouvrir à la main puis de faire un _IEAttach, dans tous les cas, le même HTML est retourné par _IEDocReadHTML et aucune balises de formulaire n'est présente.

Coté serveur, le moteur de formulaire du site web est un produit fournit par la société WorfFlowGen ( www.workflowgen.com )
Je ne peux pas donner accès au site Intranet de société pour tester (inaccessible depuis l'internet).

Coté client :
Windows 7 Enterprise ; Service Pack 1
Internet Explorer 11 Version: 11.0.9600.19301 ; version des mises a jour: 11.0.115 (KB4489873)
AutoIt 3.3.14.5

Quelqu'un aurait une idée pourquoi l’exécution des scripts de la page ( qui s'effectuent bien, puisque le rendu à l’écran est correct) ne se retrouve pas dans le HTML renvoyé par les fonctions _IE ? Et si il y a moyen de modifier ça ?

Merci d'avance.

Patrick
Répondre