Accès aux objets dans une frameset

Signaler
Messages postés
1
Date d'inscription
vendredi 9 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2013
-
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 mon 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, il n'y a pas de body dans la page web, donc je ne peux pas instancier l'objet 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 parentes 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 frames é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 mais 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.