Bonjour,
Après avoir un peu cherché, je n'ai pas trouvé mon bonheur car je n'ai rien trouvé qui traite de ces 3 sujets en même temps.
BESOIN : je souhaite accéder à des éléments d'une page web, ces éléments étant placés dans une FRAME, elle-même incluse dans une FRAMESET incluse dans une première FRAMESET
==> l'inspection du code source indique donc "html>frameset1> frameset2>frame>mes_éléments_que_je_veux_voir" (je fourni peu d'info car cette page web appartient au client pour qui je bosse)
CODE UTILISÉ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Dim oNav As SHDocVw.InternetExplorerMedium
Dim oDoc As MSHTML.HTMLDocument
Dim objFrame As HTMLFrameElement
Dim obj_FrameDoc As HTMLDocument
Dim aElement As IHTMLElement
'---Connection au site
Set oNav = New SHDocVw.InternetExplorerMedium
oNav.Visible = True
oNav.navigate Sheets(sGlob_FeuillePrincipale).Range(sGlob_cell_lienPRESTA).Value
'---On attent que la page s'affiche en temporisant
If WaitIE(oNav, 10) Then
' ' 10s écoulées et page non chargée
MsgBox "Time out!"
Else
' 'Page chargée, on continue
Set oDoc = oNav.document
End If
'---Parcours des éléments de la page
For Each aElement In oDoc.getElementsByTagName("FRAME")
'Récupération du FRAME où sont situés les éléments désirés
' If aElement.Name = "contenu" Then
'Récupération de la FRAME dans une variable adéquate
Set objFrame = aElement
'Récupération du contenu de la FRAME
Set obj_FrameDoc = objFrame.contentDocument
'Parcours des liens dans la FRAME
For Each aElement2 In obj_FrameDoc.getElementsByTagName("A") |
PROBLÈME : le problème se pose lors de l'exécution de la ligne 32 et j'obtiens un "Erreur d'exécution '70' : Permission refusée"
ACTIONS FAITES : j'ai tenté d'enlever/remettre la référence "Microsoft Internet Controls" comme suggéré par un site, de rajouter une temporisation pensant que la page n'était pas complétement chargée, accéder directement aux éléments sans passer par des boucles,... en vain.
==> ce bout de code marche très bien pour d'autre pages web internes (la seule différence étant, bien entendu, le lien passé à l'instruction de la ligne 11)
==> l'inspection de code, quand j'utilise EDGE semble désactivé (en appuyant sur F12, j'obtiens un message disant "DevTools a été déconnecté de la page"
==> en plaçant des espions, je vois à plusieurs endroits le "<Permission refusée>" de la colonne 'Valeur'
==> en mettant un "debug.print oDoc.Body.innerHTML" en ligne 21, je ne vois pas toute ma page mais seulement le contenu du frameset1 et ce, seulement pour les FRAME et FRAMESET qu'il contient
PISTES : pour le moment je sèche complétement, ainsi que deux ou trois collègues.
==> est-ce un problème lié à mon développement ? Si oui, je suis preneur de tout avis sur la question
==> est-ce lié à une règle de sécurité sur le site intranet empêchant tout robot ou autre d'agir (si cela existe en matière de sécurité) ? Si oui, je ne pourrai pas faire grand chose
N'hésitez pas à poser des questions, j'essaierai d'y répondre dans la mesure du possible.
D'avance merci pour ne serait-ce qu'avoir lu ce message.
Cordialement,
Boris
Partager