2010-04-21 12 views
6

Je viens d'installer avec succès TWILL sur mon ordinateur avec l'aide d'un membre très favorable de "StackOverflow" (vous pouvez le vérifier sur HERE) et j'ai essayé d'exécuter un des exemples simples sur la page de documentation de twill (vous pouvez voir cette page HERE). Voici cet exemple:Comment se connecter à un site Web en utilisant twill installé?

alt text http://roundcan.narod.ru/some_pics/19.jpg

Supposons que mon nom d'utilisateur sur www.slash.org est lynxye et mon mot de passe est mammifère. Lorsque j'essaie d'entrer cet exemple de code dans mon invite Python, je ne peux taper et entrer la première ligne du code parce que lorsque je clique sur "Entrée" pour commencer une nouvelle ligne, je reçois quelques messages d'erreur:

alt text http://roundcan.narod.ru/some_pics/20.jpg

La même chose se produit lorsque je tente d'entrer ce code dans mon terminal:

alt text http://roundcan.narod.ru/some_pics/21.jpg

Je pense que je manque sur quelques notions de base ici. Peut-être que j'ai besoin de créer un fichier qui contiendrait ce code et ensuite exécuter ce fichier d'une manière ou d'une autre, mais je ne sais vraiment pas où je dois créer ce fichier et avec quelle extension.

Quelqu'un peut-il, s'il vous plaît, m'aider avec ceci?

Répondre

4

Vous devez exécuter ces commandes à l'intérieur sergé, au lieu de shell python

D:\tmp\twill-0.9>python twill-sh 

-= Welcome to twill! =- 

current page: *empty page* 
>>

Vous pouvez mettre les commandes en twill quand vous voyez >>

ou il y a 2 seulement des lignes dans le fichier twill-sh

import twill.shell 
twill.shell.main() 

vous pouvez simplement copier coller que 2 lignes à l'invite python.

>>>import twill.shell 
>>>twill.shell.main() 

-= Welcome to twill! =- 

current page: *empty page* 
>>? 

Undocumented commands: 
====================== 
add_auth    fa   info    save_html   title 
add_extra_header  find   load_cookies  setglobal   url 
agent    follow  notfind   setlocal 
back     formaction redirect_error show 
clear_cookies  formclear redirect_output show_cookies 
clear_extra_headers formfile  reload   show_extra_headers 
code     formvalue reset_browser showforms 
config    fv   reset_error  showhistory 
debug    get_browser reset_output  showlinks 
echo     getinput  run    sleep 
exit     getpassword runfile   submit 
extend_with   go   save_cookies  tidy_ok 

current page: *empty page* 
>>
+0

Bonjour, S.Mark !!! Savez-vous où cette coquille de sergé pourrait être localisée? Il y a un fichier appelé "twill-sh" dans mon dossier "twill-0.9". Est-ce la coquille de sergé? Étrange, c'est vide - je veux dire, il n'a pas d'extension. – brilliant

+1

Salut, oui, courir comme python twill-sh – YOU

+0

@brilliant, j'ai mis à jour ma réponse. – YOU

0

Les chevrons ne doivent pas être entrés littéralement; ils sont juste là pour indiquer que vous devriez entrer une valeur. Essayez

setlocal username lynxye

à la place.

+0

J'ai juste essayé - j'ai reçu le même message d'erreur de syntaxe. – brilliant

3

Ça va le faire:

>>> import twill.commands 
>>> import re 
>>> 
>>> class browser: 
... def __init__(self, url="http://www.slashdot.org"): 
...  self.a=twill.commands 
...  self.a.config("readonly_controls_writeable", 1) 
...  self.b = self.a.get_browser() 
...  self.b.set_agent_string("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14") 
...  self.b.clear_cookies() 
...  self.url=url 
... def slashdot(self, loginName, passwd): 
...  self.b.go(self.url) 
...  f = self.b.get_form("1") 
...  regexp = re.compile("Log In") 
...  link = self.b.find_link(regexp) 
...  if link: 
...   self.b.follow_link(link) 
...   f=self.b.get_form("2") 
...   f["unickname"] = loginName 
...   f["upasswd"] = passwd 
...   self.a.fv("2", "userlogin", "") 
... 
>>> 
>>> t=browser() 
>>> t.slashdot("username", "password") 
==> at http://slashdot.org/ 
==> at http://slashdot.org/my/login 
forcing read-only form field to writeable 
>>> 

Il est aussi plus facile si vous utilisez BeautifulSoup pour analyser le code html

+0

Thakn You, amadain !!! Pouvez-vous, s'il vous plaît, dites-moi, que fait la deuxième ligne de votre code (>>> import re)? – brilliant

+1

import réimporter le module d'expression régulière. N'êtes-vous pas habitué à python? Je suggère de courir à travers le tutoriel sur www.python.org. C'est un très bon tutoriel pour vous aider à démarrer sur python – amadain

+0

Merci, amadain !!! Oui, je suis juste un débutant en python. Merci de m'avoir référé à ce tutoriel - beaucoup de mes questions y sont expliquées! – brilliant

0

Ce n'est pas la façon d'utiliser dans l'invite.

Vous devez placer la paire valeur/clé entre parenthèses.Comme,

setlocal ('uname', 'xyz')

setlocal ('mot de passe', '123')

go (» http://abc.org ')

fv (' 1' , 'foo', 'bar')