|
Activex + ole automation + html + maudits <div.... |
Débuté par HERVE, 14 sep. 2017 10:42 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 14 messages |
|
Posté le 14 septembre 2017 - 10:42 |
Bonjour à vous,
Je suis en train de travailler sur le remplissage automatique de champ html sur un principe de champ activex qui contient le contenu d'une URL, un
HTMLDocument est un objet OLE dynamique HTMLDocument=AX_web>>Document
mhtmInputBox est OLE dynamique mhtmInputBox = HTMLDocument>>getElementById("ce que je recherche")
L'élément recherché est une zone en saisie, donc, une fois trouvée
mhtmInputBox>>Value = "ce que je veux mettre dedans"
Sur le papier, très simple, mais ou cela se corse, c'est quand cette zone se trouve dans des <div... imbriqués, comme ceci :
<div id="page"> <"div id=content"> <div...>bla bla </div> <div...>bla bla </div> <div class "tac"> <form id = "toto name="toto .... method="get"> <input id="listsearchmin" type="text" name="q" title="Rechercher" value="Rechercher une Commune..." onfocus="this.value='';" maxlength="100" autocomplete="off" style="width:190px;"/>
c'est ce dernier (name="q") que je souhaite atteindre pour y mettre une valeur, et là, j'avoue coincer.
Comment faire ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 14 septembre 2017 - 13:01 |
Bonjour, N'ayant pas votre code HTML au complet je n'ai pu faire un véritable test, mais en passant par un «WebBrowser» cela semble fonctionner.
CodeHTML est une chaîne UNICODE
myWebBrowser est un WebBrowser dynamic
CodeHTML = [ <html> <body> <div class="page"> <p class="skiplink"><a href="#content">Aller au contenu</a> | <a href="#nav">Aller au menu</a></p> <div class="header">En-tête</div> <div class="nav" id="nav">Navigation</div> <div class="main"> <div class="wrapper"> <div class="content" id="content">Contenu</div> <p id="data">data one</p> </div> <div class="aside">Contexte</div> </div> <div class="footer">Pied de page</div> </div> </body> </html> ]
myWebBrowser = allouer un WebBrowser myWebBrowser:DocumentText = CodeHTML
WHILE myWebBrowser:DocumentText <> CodeHTML Multitâche(1) END IF myWebBrowser:Document <> Null THEN Trace(myWebBrowser:Document:GetElementById("data"):InnerText) myWebBrowser:Document:GetElementById("data"):InnerText = "new data" Trace(myWebBrowser:Document:GetElementById("data"):InnerText) END Libérer myWebBrowser |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 14 messages |
|
Posté le 14 septembre 2017 - 14:14 |
Bonjour,
Merci pour votre réponse.
Je n'ai pas mis l'ensemble du code, qui fait partie d'une page web "http://www.annuaire-mairie.fr/departement-eure.html"
Ce que j'ai mis était simplement pour montrer un champ à remplir, se trouvant dans divers "div" imbriqués.
Le projet étant de prendre cette page, y entrer automatiquement le nom d'une commune, cliquer automatiquement sur le bouton existant également dans cette page , et récupérer des infos dans la page de résultats qui apparaitra ensuite.
Dans le cahier des charges, il est prévu de le faire en activeX et javascript, sous windev 22, sous windows 10.
au passage, "myWebBrowser est un WebBrowser dynamic" ne fonctionne pas, "WebBrowser " n'est pas un type reconnu ici. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 14 septembre 2017 - 14:31 |
WebBrowser est une classe .NET, Il faut l'ajouter au projet en ajoutant l'assemblage «System.Windows.Forms» |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 14 messages |
|
Posté le 15 septembre 2017 - 08:24 |
Encore merci. J'ai suivi les conseils, ajouté l'assemblage nécessaire, et commencé à "triturer" la classe WebBrowser dont, finalement, les propriétés sont similaires en bien des points à l'activeX "shell.explorer"-javascript, syntaxe mise à part
Cela ne résout pas mon problème, je vais fouiller encore plus loin. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 14 messages |
|
Posté le 20 septembre 2017 - 11:07 |
Bonjour, voici un retour.
J'ai drastiquement réduit le code HTML que je récupère du site, ne laissant que les arborescences.
<!DOCTYPE html> <html lang="fr" dir="ltr" itemscope itemtype="http://schema.org/WebPage"> <head> </head> <body> <header> </header> <div id="page"> <div id="content"> <div itemscope itemtype="http://schema.org/AdministrativeArea"> </div> <h1>Villes et mairies du Département de l'Eure (27)</h1> <div id="path2"> </div> <p class="intro"> </p> <div class="tac"> <form name="flistsearchmin" action="/" method="get" id="flistsearchmin"> <input id="listsearchmin" type="text" name="q" title="Rechercher" value="Rechercher une Commune..." onfocus="this.value='';" maxlength="100" autocomplete="off" style="width:190px;"/> <input class="sub" type="submit" name="sa" value="Rechercher"/> <input type="hidden" name="cx" value="partner-pub-9358454219275145:6365751691"/> <input type="hidden" name="cof" value="FORID:10"/> <input type="hidden" name="ie" value="UTF-8"/> </form> </div> <h2>Liste des communes</h2> <div id="annuaire"> </div> <div class="block"> </div> </div> </div> <div id="sideleft"> </div> <div id="footer"> </div> </div> </body> </html>
Dans ce code, il y a un champ id "listsearchmin" qui est une zone remplissable, avec un tag "value" qui doit être modifié, l'autre est un bouton classe "sub", name "sa" sue lequel un click doit être fait.
Comme vous pouvez voir, "div" à part, la description des zones à remplir ou cliquer est différente de votre exemple de code, qui fonctionne très bien d'ailleurs.
J'ai essayé bien des choses, mais pas de résultat, du coup, me voici encore coincé. |
| |
| |
| | | |
|
| | | | |
| | |
|