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.
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.
http://stackoverflow.com/questions/6445284/how-to-navigate-to-and-enter-input-in-nested-frame-form-with-mechanize
et éventuellement formfill dans twill :
http://twill.idyll.org/extensions.html
--
DW