Connaitre le nom des elements d'une page internet [Résolu]

Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Bonjour à tous

Je voudrais savoir si quelqu'un connait un lien ou une piste pour trouver un code qui permette de donner le nom des elements d'une page internet explorer, sur lequel le focus est placé.

C'est à dire que en faisant des TAB successifs on aurait le nom de chacun des elements ou le focus atterri à la suite de chaque TAB

Je sais ...la question est pas tres claire

Merci de votre aide
Bonne journée

47 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
pour le duration, c'est normal...

si tu assigne une valeur au innerText, tu va écraser le contenu de la balise :

<monTag>xxx</monTag>

ici, le xxx. C'est bien différent de la Value.


pour le popup, je me dis qu'on doit lister les fenetres de IE, et zou...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
voir le ActiveElement de ton HTMLDocument
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Bonjour RENFIELD, content de te reparler à nouveau
Je sais que tu as beaucoup travaillé sur le pilotage de IE par VB

Je vais essayer de chercher dans la direction que tu m'as donné, en esperant trouver un peu plus que la misere que j'ai trouvé actuellement.
C'est quand meme dingue que depuis le temps que pas mal de gens essaye de piloter IE, il n'y ai toujours pas une DLL ou autre qui soit apparue :-(

Encore merci pour ton aide


 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
.... ben y'a le DOM ^^
ca permet de faire beaucoup, tout de même :p
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Le DOM ??? j'en avais un peu entendu parler.
Je viens de faire une recherche et je m'apperçois que ça parle beaucoup de XML et pas trop de page internet :-(

Et puis on peut pas dire non plus que y'a foule d'info sur ce DOM surtout géré par VB6 :-(
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
créés un nouveau projet
menu Projet > References > Microsoft HTML Object Library
valide

presse F2 (explorateur d'objets)
filtre MSHTML

est-ce que la longue liste de classes, propriétés et méthodes te convaiquent que le DOM est vaste et puissant ?


---
quel est le but final de ce que tu cherches à faire ?
cliquer sur un lien ?

énumérer les objets d'une page web ?

juste connaitre le nom de l'element actif ?
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Tu sais je suis un peu mickey dans l'apprenti sorcier.
J'suis aussi nul que lui, mais par contre j'ai pas les grandes oreilles :-))

En fait mon reve depuis pas mal d'années c'est de pouvoir piloter IE.
Justement ecrire dans les champs
Cliquer sur les boutons
Cliquer sur les liens
Lire la page...

Enfin bref...le piloter quoi

Mais voila....c'est pas simple pour mickey :-(

Je suis arrivé parfois en faisant des essais a ecrire dans certains champs, car ils avaient la propriété "Name" donc j'etais emmerveillé de voir se remplir les champs sans que je tape les caracteres avec mes doigts boudinés. :-)

Mais bien souvent et la ou ça se gate, c'est que les elements n'ont pas de nom :-(
Alors si le bouton est seul je m'en sort avec une pirouette, je fais un submit.
Mais quand y'en a plusieurs.......

Enfin bref, ça fait des années que je reessaye en recuperant des morceaux de codes de droite a gauche et y'a toujours un OS.

J'ai un reel besoin pour mon travail et moi-meme de trouver comment le piloter et je suis desespéré car au fil des années, je n'ai jamais trouvé un site ou quoi que ce soit qui explique pas a pas comment s'y prendre selon la situation.

J'ai meme essayé le javascript, alors la j'ai baigné dans toutes les larmes de mon corp :-((

Parce que selon le cas, si c'est ça, faut faire ci, mais si c'est pas ci faut faire ça...
Aparement aucune page internet n'est faite pareil...et j'y comprend rien, y'a des DIV qui s'emmelle les pinceaux entre elles, et plein de mots que "je comprend meme pas le titre" comme dirait coluche.
Et plus sur les sites de javascript on essaye de m'expliquer et moins je comprend.

Y'a aparement plein de methodes differentes de construire une page, et on ne peut pas etablir une methode une fois pour toute, ça depend du createur de la page (Enfin de ce que j'ai compris)

Voila mon bon RENFIELD, j'avais aussi vu ton super code qui faisait deja pas mal de choses, d'ailleur c'est le seul que j'avais trouvé assez complet et qui m'avait donné enfin l'espoir de pouvoir faire ce que je veux :-)

http://www.vbfrance.com/codes/PILOTER-INTERNET-EXPLORER-WEBBROWSER-REPONSE-FORUM_25669.aspx.

Et deja le 22/4/2005 je t'avais félicité, et j'avais un probleme avec une saloperie de bouton image :-((

Tu m'avais repondu : tu peux enumerer les images de ta feuille, et tenter de reconaitre le bouton souhaité

En fait pour l'instant, j'essaye de deposer des annonces sur un site, seulement le probleme c'est que selon la rubrique du produit que je veux poser, la page est differente.
Alors au debut je faisais des sendkeys....mais evidement ça a vite foiré car il suffit qu'un champ soit en plus ....

Alors je me suis dit : "Si j'avais le nom de chaque element sur lequel le focus s'arrette, il serait ''facile'' de savoir avec mes sendkeys si j'ecris dans le bon champs ou je clic sur le bon bouton"

Voila......pour ce jour pourquoi en desespoir de cause j'ai posé cette question.
Evidemment, si il y avait une methode pour ecrire ou cliquer a coup sur dans les elements qui n'ont pas de nom, les images etc ... sans passer par les sendkeys......je serais tellement content que je rebondirais sur les murs.

Ce qui est fou c'est que c'est un sujet qui est de plus en plus demandé, car maintenant de plus en plus de programme passent par les navigateurs, au point que dans quelques années les EXE seront de moins en moins utilisés.

Et je ne trouve pas un TUTO ou un site qui explique comment s'y prendre.

En tout cas je te remercie de m'avoir lu, jusque la....ma reponse est aussi longue que mon desespoir, alors tu vois un peu :-)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
et beh (j'ai tout lu)...

premièrement, oublies SendKeys, c'est dangereux (pas de controle sur quiqui recoit)

si un controle a un ID ou un Name, c'est royal :

getElementById ou getElementByName

si on peut le reconnaitre parmi d'autres:
getElementByTagName

exemples:

getElementByTagName("body")(0)
(facile ^^, y'en a qu'un)

le tout est de voir au cas par cas...

la page que tu souhaites piloter est accessible ?

tu aurais un extrait d'HTML a me soumettre ?

(mon code exemple est pas top top, il utilise pas les getElementById ^^)
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Oh que oui qu'elle est accessible.
En fait c'est pour poser des annonces sur Ebay.

http://www.ebay.fr

Par exemple comment ferais tu pour cliquer sur "Mon Ebay" car ça commence tout de suite :-( il a pas de name, juste un ID id="MyEbay"
Bien sur, je pourrais utiliser le lien HREF, mais comme j'aimerais comprendre, si tu pouvais me montrer comment s'y prendre en simulant un click sur ce lien qui n'a pas de nom :-)

Puis sur "Ouvrir une session" car la j'ai un name
name="ssPageName" que je sais meme pas si c'est le bon (J'ai pas l'impression) car c'est un submit ??

Et entrer mot de passe et login ....
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
"pas de name, juste un ID "

cool:

WebBrowser1.Document.getElementById("MyEbay").Click

si tu avais eu, au contraire, un Name et pas un Id, tu aurais pu faire :

WebBrowser1.Document.getElementByName("MyEbay").Click
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Tu est trop genial RENFIELD.
ça fait tellement d'années que je lis tes posts et que je t'admire....

A te lire, on dirait toujours que la programmation est aussi facile a comprendre qu'une histoire de bisounours :-)

Et pour le bouton "Ouvrir une session ???"
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Option Explicit

Private Const MAINURL As String = "http://www.ebay.fr/"

Private Sub CcBtnHome_Click()
WebBrowser1.Silent = True
WebBrowser1.navigate MAINURL
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim oDoc As HTMLDocument
If URL = MAINURL Then
Set oDoc = WebBrowser1.document

oDoc.getElementById("MyEbay").Click

Do
DoEvents
Loop Until WebBrowser1.readyState = READYSTATE_INTERACTIVE

Do
DoEvents
Loop Until WebBrowser1.readyState = READYSTATE_COMPLETE

oDoc.getElementsByName("userid")(0).Value = "**********"
oDoc.getElementsByName("pass")(0).Value = "***********"
oDoc.getElementsByName("SignInForm")(0).submit

Do
DoEvents
Loop Until WebBrowser1.readyState = READYSTATE_INTERACTIVE

Do
DoEvents
Loop Until WebBrowser1.readyState = READYSTATE_COMPLETE

'# ...
End If
End Sub
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Merci beaucoup RENFIELD

Alors j'ai commencé a essayer de comprendre et a l'adapter a mes besoins.


Par contre entre l'ouverture de IE et l'entrée des login et mot de passe, y'a un bouton "Ouvrir une session" dont voici la source :

<form action= "http://signin.ebay.fr/ws/eBayISAPI.dll" method="get">
<td valign="middle"> ">  

Quand a moi, j'ai pondu un gros oeuf comme ça :-)
J'ai été obligé de commenter la boucle IE.readyState = READYSTATE_INTERACTIVE car ça restait coincé dessus, je ne sais pas pourquoi :-(



Private WithEvents IE As InternetExplorer
Private Const MAINURL As String = "
http://www.ebay.fr/
"



Public Sub Form_Load()
 
 Set IE = New InternetExplorer
 IE.Silent = True
 IE.Visible = True
 IE.navigate MAINURL
 
End Sub



Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)



 Dim oDoc As HTMLDocument
   
 If URL = MAINURL Then
 
  Set oDoc = IE.document
  
  oDoc.getElementById("MyEbay").Click
  
'  Do
'   DoEvents
'  Loop Until IE.readyState = READYSTATE_INTERACTIVE
  
  Do
   DoEvents
  Loop Until IE.readyState = READYSTATE_COMPLETE

  Code pour cliquer sur le bouton "Ouvrir une cession"    

  Do
   DoEvents
  Loop Until IE.readyState = READYSTATE_COMPLETE

  oDoc.getElementsByName("userid")(0).Value = "**********"
  oDoc.getElementsByName("pass")(0).Value = "***********"
  oDoc.getElementsByName("SignInForm")(0).submit
  
  Do
   DoEvents
  Loop Until IE.readyState = READYSTATE_INTERACTIVE



  Do
   DoEvents
  Loop Until IE.readyState = READYSTATE_COMPLETE
  
  '# ...
 End If
End Sub



Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 IE.Quit
 Set IE = Nothing
End Sub




 


 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
j'ai inversé la boucle, pour tester avant le DoEvents.
si ta ligne est bonne + cache + etc.

le status interaactif ok est validé et le document chargé dans la foulé, sans avoir pu sortir du premier do...loop

j'ai mis a jour le zip de ma source de pilotage.
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
D'accord merci, je vais aller voir

Mais comment ferais tu, pour cliquer sur ce bouton qui est encore d'un autre type à cette page :

http://my.ebay.fr/ws/eBayISAPI.dll?MyEbayForGuests&gbh=1&MyEbay=&guest=1

Et dont voici la source

<form action="http://signin.ebay.fr/ws/eBayISAPI.dlltype="hidden" name="ssPageName" value="STRK:MEFGIN:SIGN"> "> 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
soumets la Form ^^

getElementsByName("ssPageName")(0).submit
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
J'ai essayé et ça me dit "variable objet ou variable bloc with  non definie"
Mais je me demande si la page a le temps de se charger ????

En plus le proxy de mon boulot, cet abruti y dit que y'a un virus HUGE dans ton zip....quand j'te dis que j'suis pas aidé, j'travaille avec des gants de boxe  :-)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
surement pas eu le temps... effectivement
rapport aux boucle d'attente qui sont necessaires...

pas de virus dans mon code source, c'est même pas executable ^^
il doit pas aimer voir tout ce code de pilotage, le boulet
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Bon, je pense avoir reglé momentanément le probleme de la page pas chargé, 
J'ai tout fait comme t'as dit IE.getElementsByName("ssPageName")(0).submit et cette fois il me dit cette fois l'objet ne gere pas cette methode :-(
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tu passes bien par le Document ?

ex:

IE.Document.getElementsByName