Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
Ddp Ludo
Bonjour,

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

Et je suis bloqu=E9 depuis 2 jours...

Structures HTML de la page :

<HTML>
<HEAD>
<frameset>
<frameset id=3DfrmSet>
<frame name=3DframeMain>
<html>
<head>
<body>
<input id=3D"username">

Je cherche =E0 acc=E9der =E0 remplir le champ username et je tourne en rond=
=E0 cause des frames.

J'ai test=E9 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=E9thode.

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

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

br =3D 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 =3D [('User-agent', 'Firefox')]
url =3D "file:///root/Prog/html/AC1.htm"
response =3D br.open(url)
print response.read() =20

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

lnkList =3D [] =20
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=E8s au mieux, j'arrive =E0 r=E9cup=E9rer le pointeur de l'objet frame m=
ais je me sers plus de mechanize....

frame =3D 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=E8me.

Merci par avance.

1 réponse

Avatar
Damien Wyart
Une recherche rapide me donne :

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