Accéder aux objets d'une frame d'une page web

Le
Ddp Ludo
Bonjour,

Je suis en train de programmer un robot qui doit me permettre de tester si =
un mot de passe par défaut a bien été changé sur des serveurs de mo=
n intranet.

Et je suis bloqué depuis 2 jours

Structures HTML de la page :

<HTML>
<HEAD>
<frameset>
<frameset id=frmSet>
<frame name=frameMain>
<html>
<head>
<body>
<input id="username">

Je cherche à accéder à remplir le champ username et je tourne en rond=
à cause des frames.

J'ai testé de la faire avec mechanize. Mais comme on peut le remarquer, i=
l n'y a pas de body dans la page web, donc je ne peux pas instancier l'obje=
t form et obtenir les champs de la page via cette méthode.

Je peux ouvrir directement la page htm où se trouve username et le bouton=
de validation, mais ça ne marche pas. Il manque toutes les fonctions par=
entes qui permettent de lancer réellement l'identification.

Voici le début de mon code qui fonctionne. Il se connecte à ma page et =
me renvoie correctement le code source.

br = mechanize.Browser()
br.set_all_readonly(False)
br.set_handle_robots(False) # ignore robots
br.set_handle_refresh(False) # can sometimes hang without this
br.addheaders = [('User-agent', 'Firefox')]
url = "file:///root/Prog/html/AC1.htm"
response = br.open(url)
print response.read()

Ensuite, on cherchant sur internet, il m'a semblé comprendre que les fram=
es étaient renvoyées par la classe links()

lnkList = []
for lnk in br.links():
lnkList.append(lnk.url)
print "Liens : ", lnk.url

Ca me liste correctement les liens.

Mais impossible d'utiliser follow_link(), find_link. je n'y arrive pas .=
impossible d'atteindre mon champ username.

Après au mieux, j'arrive à récupérer le pointeur de l'objet frame m=
ais je me sers plus de mechanize.

frame = sys._getframe(2)
print frame

Quelqu'un connait-il une solution ?

Soit dans l'utilisation du code, soit dans mon raisonnement et mon approche=
du problème.

Merci par avance.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Publicité
Poster une réponse
Anonyme