Python 如何将所有twill命令放在一个.py文件中的一段代码中?

Python 如何将所有twill命令放在一个.py文件中的一段代码中?,python,command,twill,Python,Command,Twill,我刚刚开始探索 Twill是一种非常棒的网页浏览脚本语言,它满足了我的所有需求 到目前为止,我一直在使用Python shell中的twill(IDLE(PythonGUI)),我在那里做的事情是一个接一个地执行命令(我的意思是,我键入一个命令,运行它,然后键入下一个命令): (来源:) (来源:) (来源:) (来源:) (来源:) (来源:) (来源:) 但我不知道如何将所有这些命令放在一个.py文件中,这样它们就会一个接一个地自动执行 斜纹布似乎有这样的可能性。twill文档页

我刚刚开始探索

Twill是一种非常棒的网页浏览脚本语言,它满足了我的所有需求

到目前为止,我一直在使用Python shell中的twill(IDLE(PythonGUI)),我在那里做的事情是一个接一个地执行命令(我的意思是,我键入一个命令,运行它,然后键入下一个命令):
(来源:)


(来源:)


(来源:)


(来源:)


(来源:)


(来源:)


(来源:)

但我不知道如何将所有这些命令放在一个.py文件中,这样它们就会一个接一个地自动执行

斜纹布似乎有这样的可能性。twill文档页面上的这个示例(您可以看到它)向我们展示了一段由多个命令组成的代码:
(来源:)

所以,我的问题是:如何在twill中将所有命令放在一起


更新1:

(此更新是我对S.Mark的回应)

你好,S.马克!!!很抱歉反应太晚。 首先,关于我的twill和python相关文件夹的位置的一些信息:

在我的计算机上安装Python2.5的路径:C:\Python25

现在我的计算机上我的twill-0.9的路径:E:\tmp\twill-0.9

假设我希望自动执行以下命令:

go http://www.yahoo.com

save_html result.html
此代码应该查看yahoo页面,然后将其HTML代码保存到result.HTML文件中。 因此,按照您的指示,我首先创建了“test.txt”文件,其中包含只有两行代码的代码,并将该文件保存为twill-0.9文件夹中的“test.twill”,这意味着该文件的完整路径现在是E:\tmp\twill-0.9\test.twill

然后,我尝试以多种不同的方式将文件名作为参数传递给twill sh命令,但从未奏效(我一定是做错了什么):
(来源:)


(来源:)

但你知道吗,我决定做一点实验,创建了一个test.py文件,其中也只包含这两个命令。我还将此文件放在twill-0.9文件夹(E:\tmp\twill-0.9\test.py)中,然后我决定尝试使用twill的runfile命令从twill shell运行它,令人惊讶的是,它居然成功了
(来源:)

运行它之后,我查找了我的C:\Python25文件夹,并在那里找到了新创建的result.html文件

我在这里所做的只是使用twill命令从twill shell运行一个文件。虽然目前这正是我所需要的,但其他支持者(如下所示)建议我应该使用pythonshell,而不是twillshell,这是我仍然不知道如何做的事情

我的下一步将尝试在“Google App Engine”上运行类似的代码,但据我所知,只有Python被识别,而不是twill,这意味着如果我只知道如何在twill中操作,而不知道如何在Python中操作,我将无法让“Google App Engine”执行我的命令


更新2:

(2010年4月23日星期五,凌晨3:48:15(GMT+0.00))

(此更新是我对S.Mark的第二次回复)

从命令提示符运行它似乎也不成功:

(来源:)

我认为与其使用twill外壳,不如直接使用twill python api调用函数。

我认为与其使用twill外壳,不如直接使用twill python api调用函数。

将twill命令放入文件,例如
test.twill

setlocal query "twill Python"

go http://google.com/

fv 1 q $query
submit btnI     # use the "I'm feeling lucky" button

show
然后将文件名作为参数传递给twill sh命令,如

python twill-sh test.twill
您可能需要检查twill源代码的
tests
文件夹中的.twill示例代码

test-back.twill
test-basic.twill
test-dns.twill
test-equiv-refresh.twill
test-find.twill
test-form.twill
test-formfill.twill
test-global-form.twill
test-go-exit.twill
....

将twill命令放入文件中,例如
test.twill

setlocal query "twill Python"

go http://google.com/

fv 1 q $query
submit btnI     # use the "I'm feeling lucky" button

show
然后将文件名作为参数传递给twill sh命令,如

python twill-sh test.twill
您可能需要检查twill源代码的
tests
文件夹中的.twill示例代码

test-back.twill
test-basic.twill
test-dns.twill
test-equiv-refresh.twill
test-find.twill
test-form.twill
test-formfill.twill
test-global-form.twill
test-go-exit.twill
....
导入字符串、re、sys、os
导入斜纹命令
类浏览器:
def\uuuu init\uuuuuself(self,url=“www.google.com”,query=“python code”,log=None):
self.a=twill.commands
self.a.config(“只读\u控件\u可写”,1)
self.b=self.a.get_browser()
self.b.set_agent_字符串(“Mozilla/5.0(Windows;U;Windows NT 5.1;en GB;rv:1.8.1.14)Gecko/20080404 Firefox/2.0.0.14”)
self.log=log
self.b.清除cookies()
self.url=url
self.b.go(self.url)
f=自我。b.获取表格(“1”)
#self.log.debug(“表单为%s”%f)
f[“q”]=查询
self.b.提交()
self.log.debug(“链接\n%s”%self.b.showlinks())
self.log.debug(“表单\n%s”%self.b.showforms())
pageContent=self.b.get_html()
self.log.debug(“html是”%pageContent)
导入字符串、re、系统、操作系统
导入斜纹命令
类浏览器:
def\uuuu init\uuuuuself(self,url=“www.google.com”,query=“python code”,log=None):
self.a=twill.commands
self.a.config(“只读\u控件\u可写”,1)
self.b=self.a.get_browser()
self.b.set_agent_字符串(“Mozilla/5.0(Windows;U;Windows NT 5.1;en GB;rv:1.8.1.14)Gecko/20080404 Firefox/2.0.0.14”)
self.log=log
self.b.清除cookies()
self.url=url
self.b.go(self.url)
f=自我。b.获取表格(“1”)
#self.log.debug(“表单为%s”%f)
f[“q”]=查询
self.b.提交()
self.log.debug(“链接\n%s”%self.b.showlinks())
self.log.debug(“表单\n%s”%self.b.showforms())
pageContent=self.b.get_html()
self.log.debug(“html是”%pageContent)
它在这里起作用(稍作更改):

这有什么帮助

A

在这里,它正在发挥作用(稍作更改):

这有什么帮助


A

您可以从twill sh加载.twill文件,请查看我的答案。@brilliant,对于更新1,您需要