Connaitre le nom des elements d'une page internet

Résolu
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
- 27 avril 2009 à 14:33
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
- 11 mai 2009 à 15:43
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

cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
28 avril 2009 à 15:33
Bah j'en suis la ....

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



Public Sub Command1_Click()
 oDoc.getElementsByName("ssPageName").submit
End Sub



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)
   
 If URL = MAINURL Then
 
  Set oDoc = IE.document
  
  oDoc.getElementById("MyEbay").Click
     
  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




 
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
28 avril 2009 à 15:41
oDoc.getElementsByName("ssPageName").submit

et non, je me suis gourré plus tot, mais je me suis repris ensuite...

l'id est unique, pas le nom.

en clair, et comme l'indique le 's' dans le nom de la fonction, elle te renvoie un tableau de tous les éléments dont le nom est...

faire donc :

oDoc.getElementsByName("ssPageName")(0).submit
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
28 avril 2009 à 15:51
Non non c'est ma faute......
En fait tu m'avais bien donné getElementsByName("ssPageName")(0).submit
Et c'est moi qui est essayé d'enlever le (0) on sait jamais que j'me suis dit :-(

Donc en résumé, que ce soit

oDoc.getElementsByName("ssPageName")(0).submit
ou bien
oDoc.getElementsByName("ssPageName").submit

Et ben j'ai la meme erreur :-(
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
28 avril 2009 à 15:54
l'a pas toute la page chargée..

testes la boucle du zip, a savoir :

Do until IE.readyState = READYSTATE_INTERACTIVE: DoEvents: Loop
Do until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
28 avril 2009 à 16:03
Bah justement, comme tu peux le voir dans mon code au dessus, j'avais mis le oDoc.getElementsByName("ssPageName")(0).submit dans un bouton pour etre sur que je le clic quand la page est bien chargée.

Et je ne sais pas ce qui se passe ici, mais y'a pas moyen de passer la boucle interactive, il reste coincé dedans, c'est pour cette raison que je l'avais commentée.
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
28 avril 2009 à 16:10
attend, je suis remonté plus haut dans les messages ^^


on peut toujours tenter un submit sur un champ hidden :p
dsl

tu peux tenter en regardant quel form est concernée :

oDoc.getElementsByTagName("form")(0).submit
ou
oDoc.getElementsByTagName("form")(1).submit
...
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
28 avril 2009 à 16:32
Ouuuaaahhh je vais rien t'apprendre ...

mais t'es vraiment une bete :-))



J'ai essayé oDoc.getElementsByTagName("form")(0).submit et peau de zobi, rien qui se produit :-)

oDoc.getElementsByTagName("form")(1).submit et j'me suis retrouvé à tataouine dans le site :-) 

Alors j'ai essayé oDoc.getElementsByTagName("form")(2).submit parce que comme je suis nul, j'essaye n'importe quoi, etant donné que je comprend rien de ce que j'essaye, c'est le seul avantage d'etre nul comme un tabouret  :-)))

Et la sesame ouvre toi :-))

Bon il me reste a comprendre pourquoi il veut pas attendre que la page soit chargée :-(
Et j'essaie d'entrer les codes.

Mais la route est longue car je suis encore pas ou je voulais aller au debut du POST.
Mais j'apprend petit a petit grace à toi

Tu es un ange.....mille merci
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
28 avril 2009 à 16:38
dans http://files.codes-sources.com/fichier.aspx?id=25669&f=Frm2_Ebay.frm

j'ai mis en ligne cet après midi:

Option Explicit

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

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

Private Sub Form_Resize()
If Me.WindowState <> vbMinimized Then
WebBrowser1.Width = Me.ScaleWidth - 150
WebBrowser1.Height = Me.ScaleHeight - WebBrowser1.Top - 300
End If
End Sub

'# Notre document a finit de charger.
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim oDoc As HTMLDocument
'# Nous sommes arrivés à bon port.
If URL = MAINURL Then
Set oDoc = WebBrowser1.document

'# On clique sur 'mon compte'
oDoc.getElementById("MyEbay").Click

'# On attend que le webbrowser prenne cet ordre en compte
Do Until WebBrowser1.readyState = READYSTATE_INTERACTIVE: DoEvents: Loop
Do Until WebBrowser1.readyState = READYSTATE_COMPLETE: DoEvents: Loop

'# On remplit les champs de login
oDoc.getElementsByName("userid")(0).Value = CcTxtUserId.Text
oDoc.getElementsByName("pass")(0).Value = CcTxtPass.Text

'# Et on soumet le formulaire
oDoc.getElementsByName("SignInForm")(0).submit

Do Until WebBrowser1.readyState = READYSTATE_INTERACTIVE: DoEvents: Loop
Do Until WebBrowser1.readyState = READYSTATE_COMPLETE: DoEvents: Loop
End If
End Sub
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
29 avril 2009 à 11:34
Bonjour RENFIELD, j'espere que tu as bien dormi, apres ce que je t'ai fait endurer hier :-)

Bon alors...alors j'ai progréssé, et voici une des pages qui m'avait obligé a passer par les sendkeys :-(

Tu vois je tape une reference en haut dans le champs "113033"
Cela me donne une categorie qui n'est jamais la meme et qui correspond à ce chiffre
Pour ce cas, c'est Auto piece accessoire
Et en dessous, y'a un checkbox qu'il faut cocher et la categorie ecrite a coté
Voiture Ancienne : Pièces > Multi-Marques : Pièces > Autres Pièces Toutes Marques

Mais y'a un "Miasme" parce que lorsque tu edite le source de cette page....et ben rien de phrase n'est ecrit, c'est untruc de ouf ....
On arrive a trouver la ligne avant le cadre :
"Les acheteurs verront votre annonce dans la catégorie que vous sélectionnez."
et apres le cadre :
Astuce : sélectionnez deux catégories pour un maximum de visibilité
Mais rien sur la ligne "Voiture Ancienne ......"

Alors la .....une demande de miracle s'impose .... :-)))

Voici le code source de cette page :

<html><head>
<!--eBay V3- msxml 6.0 XXXXXXXXXXXXXXXXXXXXXXXXXX-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><noscript><meta http-equiv="refresh" content="0;url=?NewListing&amp;aidZ4=%3CSPAN+class%3Dbtn+id%3DaidZ4_btnFrm%3E%3CSPAN+class%3Dbtn+id%3DaidZ4_btnLbl%3ECommencer+%C3%A0+vendre%3C%2FSPAN%3E%3C%2FSPAN%3E&amp;pass=&amp;MfcISAPICommand=NewListing&amp;aid=4&amp;cpg=2&amp;Sid=&amp;userid=&amp;js=1&amp;np_id=0&amp;keywords=113063&amp;js=0"></noscript><title>eBay &gt;
       Sélectionner une catégorie
      </title><script type="text/javascript" language="JavaScript">var pageName='SYI_3_E_SuggestCat';var pageType='';var siteId='71';var cobrandId='2';var server=location.hostname.toLowerCase();var channel='eBay';var colorScheme='transaction';var imagePath='http://pics.ebaystatic.com/aw/pics/fr/';var scriptPath='http://include.ebaystatic.com/aw/pics/';var stylePath='http://include.ebaystatic.com/aw/pics/';var helpPath='http://pages.ebay.fr/help/';var jsPath=scriptPath;var ebayToolbox='true';var includeHost='http://include.ebaystatic.com/aw/pics/';</script></head>

<!-- Begin eBay Header --><!--2009-04-20 14:08:17,,, uu.ru~j54>,RcmdId NewListingSYI3_SellHub,RlogId p4p%7Conmqj%3D9vt*tv%7Fn37%3F-120f117d101--><link rel="stylesheet" type="text/css" href="http://include.ebaystatic.com/v4css/fr_FR/e613i/GlobalNav14_EbayR2_e613i8396616_fr_FR.css"><!--cacheStatus: true--><script>var _GlobalNavHeaderUtf8Encoding=true;</script><script>var _GH_Bta_PC=true;</script><script>var _GlobalNavHeaderCookieTracking=true;</script><script>var _GlobalNavHeaderSrcPageId="2685";</script><script src="http://include.ebaystatic.com/js/e609/fr/ebayfooter_v4_e6091fr.js"></script><script type="text/javascript">var un="undefined";if(typeof(vjo)!=un && typeof(vjo.darwin)!=un && typeof(vjo.darwin.core)!=un && typeof(vjo.darwin.core.ebayheader)!=un && typeof(vjo.darwin.core.ebayheader.rtm)!=un && typeof(vjo.darwin.core.ebayheader.rtm.GlobalHeaderRtmCall)!=un)vjo.darwin.core.ebayheader.rtm.GlobalHeaderRtmCall.submitRTMCall("")</script><[mailto:!--@sgfp !--@sgfp]@ footerStyle=FULL @egfp@-->

<!--End eBay Footer-->

http://pics.ebaystatic.com/aw/pics/fr/express/images/imgLoading.gif">

id="hlpFrmHdr" class="hlpFrmHdr" style="display:none;visibility:hidden;">Aide, [javascript:{} ], http://pics.ebaystatic.com/aw/pics/fr/buttons/btnClose_16x16.gif">, width="96%">



</html><!--Generated by eBay toolbox, File id: Selling-->
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
29 avril 2009 à 11:45
donne moi la marche a suivre pour voir un cas similaire 'en live'
et dis moi ce que tu souhaites faire, au final...
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 10:05
Bon j'ai un nouveau probleme (Etonnant non !!!)

Selon comment j'appelle une page, il n'y a pas les memes nom de champs tantot c'est "aidZ4" et tantot "aidZ"
Alors j'en reviens à ma premiere question comment faire pour enumerer tous les elements de la page afin de verifier si "aidZ4" existe ????

J'ai essayé :

For Each oLink In oDoc.getElementsByTagName("a")
  Debug.Print
 Next oLink



Mais ça me donne des lien et pas le nom des elements de la page :-(



 
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
30 avril 2009 à 10:24
For Each oLink In oDoc.getElementsByTagName("a")
Debug.Print oLink.name
Next oLink
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 10:34
Merci, je viens d'essayer........

For Each oLink In oDoc.getElementsByTagName("a")
  Debug.Print oLink.name
Next oLink

Et ça me remonte une liste vide :-(

Par contre j'ai essayé avec une magouille (Comme dab) et grace a ton code sur le presse-papier et le code source.
Mais j'aurais préféré une methode un peu plus "PRO"

Function ChercheDansCodeSource(Mot As String) As Integer
 
 If InStr(oDoc.getElementsByTagName("body")(0).outerHTML, Mot) Then
  ChercheDansCodeSource = -1
 Else
  ChercheDansCodeSource = 0
 End If
 
End Function

Pourquoi ta combine me remonte une liste vide ????
Roooohhh!!! Ce qu'il est vilain ce IE avec moi ...... :-(((
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 13:58
Je progresse, je progresse ...
Je viens de trouver un super POST qui viens de decoincer un de mes problemes, et pour l'instant peut etre deux :

http://www.vbfrance.com/article.aspx?ID=5931

J'arrive a poser le focus sur le TEXTAREA grace à ce code, et apres ......devine .....un sendkeys :-)))

Public Function FocusTextArea(ByRef doc As HTMLDocument, ByVal InputName As String)



 Dim d As HTMLObjectElement
 Dim minput As HTMLTextAreaElement



 For Each d In doc.All
 
  DoEvents
 
  For Each minput In d.All
  
   DoEvents
  
   If minput.tagName = "TEXTAREA" Then
   
    If minput.Name = InputName Then
     minput.Value = ""
     Exit Function
    End If
  
   End If
 
  Next
 
 Next



End Function
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
30 avril 2009 à 15:35
euh... ça, on sais le faire, déjà ^^

Dim oDescr as HTMLTextAreaElement
Set oDescr = oDoc.getElementById("description")
oDescr.value = ""
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 16:14
Parle pour toi .....moi j'sais rien faire du tout :-))))
Et en plus, ça fait noir de temps que je pleure pour ecrire dans ce foutu TEXTAREA et c'est maintenanat que tu me dit que tu sais faire....tu veux ma mort :-))))

Non.....sans plaisantage, le code que je viens de te donner y marche .....
J'ai essayé le tiens....et ça marche pas  :-(
Moi je pense, que les TEXTAREA y sont encore emberlicoté les un dans les autres, et c'est pourça qu' la boucle en fouinant avec son petit groin tout rose, et ben elle trouve le bon TEXTAREA et elle arrive a lui donner le focus.

Ce qui est dingue, c'est que j'arrive pas a ecrire dedans, avec le minput.Value = "" mais juste a lui donner le focus,
Du coup le sendkeys "bidouille " y passe....je sais c'est pas beau ...mais faute de grive .... :-))
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
72
30 avril 2009 à 16:19
j'arrives pas a y ecrire, je te rassures ^^

a voir avec une page HTML bidon, sans javascript, etc.

juste un textarea.

parceque là, avec le JS powa! pas simple a s'y retrouver.
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 16:36
Bon bah si toi tu y arrive pas.......j'suis rassuré :-)
C'est normal que moi, j'y arrive pas.

En attendant avec ma combine, prise du code PERRIER Geoffroy et ben ça marche.
Alors je ne sais pas pourquoi......mais je ne vais pas etre plus royaliste que le roi ;-)

J'ai trouvé pour les jours, je ne sais pas non plus pourquoi......mais il fallait mettre
oDoc.getElementById("duration").Value = "3"
Et non pas
oDoc.getElementById("duration").innerText = "3"

Les voies de l'informatique sont inpenetrables :-))))
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 17:43
Ta combine  oDoc.getElementById("domesticShipping").FireEvent ("onchange")
elle est drolement super, mais ou vas tu chercher tout ça  .......   B-)

Mais, j'suis encore dans la "oumfa"  :-(

Comment ferais tu pour donner le focus a ce champ, car grace à ta combine j'arrive à le changer et a lui faire prendre en compte l'evenement, mais ce bouffon il a pas le focus
Et comme apres c'est encore un cadre JS donc pas de ID, NAME et tout le toutim, et bah les sendkeys s'imposent :-))))

oDoc.getElementById("domesticShipping").Value = "1"
oDoc.getElementById("domesticShipping").FireEvent ("onchange")

J'ai essayé  oDoc.getElementById("domesticShipping").Click, mais evidemment c'est trop simple pour que ça marche :-((


 


 
0
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
30 avril 2009 à 17:50
Autant pour moi ......
Je viens de trouver encore plus simple, j'y comprend rien la premiere fois ça n'avais pas marché, c'est pour ça que je te demandais.

oDoc.getElementById("domesticShipping").focus

Inpenetrables qu'elles sont les voies........inpenetrables que je te dis
0