views:

182

answers:

3

Hello, everybody!!!!

I have just successfully installed TWILL on my computer with the help of one very supportive member of "StackOverflow" (you can check it out HERE) and have tried to run one of the simple examples on the twill documentation page (you can see that page HERE). Here is that example:

alt text

Let's say my username on www.slash.org is lynxye and my password is mammal. When I try to enter that example code into my Python prompt, I can only type and enter the first line of the code because when I click on "Enter" to start a new line, I get some error messages right away:

alt text

The same happens when I try to enter this code into my terminal:

alt text

I think I miss out on some basics here. Perhaps, I need to create a file that would contain that code and then run that file somehow, but I really don't know where I need to create that file and with what extensdion.

Can anyone, please, help me with this?

A: 

The angle brackets aren't meant to be entered literally; they're just there to indicate you should enter a value. Try

setlocal username lynxye

instead.

Etaoin
I just tried - got the same syntax error message.
brilliant
+2  A: 

You need to run those commands inside twill shell, instead of python shell

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

 -= Welcome to twill! =-

current page:  *empty page*
>>

You can put twill commands when you see >>

or there is 2 only lines in twill-sh file

import twill.shell
twill.shell.main()

you can just copy paste that 2 lines to python prompt.

>>> 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*
>>
S.Mark
Hello, S.Mark!!! Do you know where that twill shell could be located? There is one file called "twill-sh" in my "twill-0.9" folder. Is that the twill shell? Strange, it's blank - I mean, it has no extension.
brilliant
Hi, yeah, run like `python twill-sh`
S.Mark
@brilliant, I have updated my answer.
S.Mark
In Unix/Linux, extensions are not needed, `#! /usr/bin/env python` inside twill-sh file and file mode executable +x make twill able to run as `./twill-sh`, in windows, you need to run like `python twill-sh`
S.Mark
or just rename it to twill-sh.py :-) then you can do `twill-sh.py` in command prompt.
S.Mark
@ S.Mark: BINGO!!! It works! Thank You, S.Mark, You saved me again!
brilliant
You're welcome brilliant :-)
S.Mark
+2  A: 

This'll do it:

>>> 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  
>>>

Its also easier if you use BeautifulSoup to parse the html

amadain
Thakn You, amadain!!! Can You, please, tell me, what does the second line of Your code (>>> import re) do?
brilliant
import re - import the regular expression module. Are you not used to python? I would suggest running through the tutorial on www.python.org. It is a very good tutorial to get you started on python
amadain
Thank You, amadain!!! Yes, I am just a beginner in python. Thank You for referring me to that tutorial - a lot of my questions are explained there!
brilliant