问题标签 [twill]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 斜纹/机械化访问 html 内容
Twill 作为网络自动化工具是否仍然适用?如果是,那么为什么目前没有维护?如果没有,Mechanize 是否进一步成熟以支持 Twill 风格的简单脚本?或者是否有另一个包已经加紧填补空白?
我能够非常快速地使用 Twill 在 python 中设置几个测试套件,但我对如何访问 Twill 在我的 python 程序中吐出的信息有点困惑。也就是说,我可以执行 showforms() 并查看整齐列出的表单值,我可以使用 fv 更新表单值并提交。但是我如何以 python var 的形式访问这些表单值之一?我该怎么说:
someField1Value = fv("1","someField1")
python - 如何开始使用斜纹布?
很抱歉我已经在“超级用户”上问过这个问题,但没有人在那里回答,所以我从“超级用户”中删除了它并决定在这里发布。希望这不是什么大罪,特别是考虑到我首先被建议在“StackOverflow”上使用斜纹布(而不是在“SuperUser”上)
我如何开始使用斜纹布?我刚刚下载了它,解压并点击了文件夹中的 setup .py 文件。黑色的窗口(终端)出现了片刻又消失了。
(我的计算机上确实安装了 Python 2.5 - 以及来自 Google App Engine 的 SDK)
在斜纹文件部分它说:
下载斜纹
twill 的最新版本是 twill 0.9,于 2007 年 12 月 27 日星期四发布;可在 http://darcs.idyll.org/~t/projects/twill-0.9.tar.gz下载。您还可以使用 Python 的 easy_install 来安装或升级 twill。
斜纹适用于 Python 2.3 或更高版本。
要开始使用 twill,请安装它,然后键入 twill-sh。在提示符下输入:
go http://www.slashdot.org/
show
showforms
showhistory
从这篇文章中我不清楚我应该输入什么(只有“twill-sh”或“twill-sh”以及该行下的所有单词)以及在哪里(我尝试在我的计算机的命令提示符窗口中输入它 -无济于事)
可以,任何人,请,在这里帮助我吗?
先感谢您。
更新1:
(本次更新是对S.Mark给出的答案的回应)
你好,S.马克!!!!我试着听从你的指示。这是发生的事情:
首先,我在我的 D 盘上创建了一个文件夹,并将其命名为“tmp”。然后我下载并解压 twill-0.9 到那个文件夹中。因此,现在我计算机上此文件的路径与您的示例中的路径相同:D:\tmp\twill-0.9 :(
来源:narod.ru)
(来源:narod.ru)
然后,我尝试在我的电脑上打开命令提示符:(
来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
然后,按照您的指示的第 2 步,我尝试切换到 D 盘:
(来源:narod.ru)
但由于某种原因它不起作用:
(来源:narod.ru)
这条中文线说类似“此操作已被拒绝”。为什么会这样?好吧,无论如何我都尝试继续执行第 3 步,这就是我所拥有的:
(来源:narod.ru)
据我了解,这条中文行说“'C:\'既不是内部命令也不是外部命令,因此无法执行。“为什么会这样?我的电脑有问题吗?
更新 2:
(此更新是我对 S.Mark 给出的答案的第二次回应)
你好,S.马克!!!再次感谢您的回答。
是的,这一次,当我刚刚输入您在帖子中突出显示的那些部分时,它起作用了。所以,当我一开始只输入“d:”时,它起作用了!!!
但是,当我输入“python setup.py build”时,我得到了同样的错误信息(“'python'既不是内部命令也不是外部命令;它不能被执行。”):(
来源:narod.ru )
我试图重复这个命令,不小心漏掉了“python”这个词:(来源:narod.ru)
当我按下“Enter”键时,构建过程似乎启动了——至少我当时看到的非常类似于你的指令的第 4 步(“开始构建过程”):(
来源:narod.ru)(来源:narod .ru)(来源:narod.ru)
但是现在我对是否继续进行第 5 步(“安装它”)有点犹豫,因为我不确定我所做的是否正确。
如果我在第 4 步中所做的没问题,我是否也应该在第 5 步中省略“python”这个词?
一个附带问题:您是如何在不截图的情况下将终端的内容放入您的帖子中的?是否有某种方法可以将终端的内容放入剪贴板?一直制作屏幕截图并在发布之前托管它们非常麻烦。
更新 3:
(此更新是我对 S.Mark 的第三次回应)
S.Mark,你好!!!
(希望你还没有厌倦我)
“……是的,你可以省略 python 并直接运行 setup.py,因为你的 python 安装在注册表中注册了 *.py……关于第 5 步,你可以运行 setup.py install”——我按照你的这些话,安装过程成功运行!谢谢你。
但是对于以下步骤(“然后从开始菜单打开 python 提示,并测试第 6 步和第 8 步”),在 Python 提示中并没有多大成功:(
来源:narod.ru)
在通常的命令提示符(终端)中也没有成功:(
来源:narod.ru)
(它再次用中文说python“既不是内部命令也不是外部命令,因此无法执行”)。你知道为什么它不起作用吗?
“……你的 python 安装在哪里?C:\Python25?” - 是的,这是正确的。
“……有一个设置(命令提示符属性 - 简单编辑模式)可以在命令提示符下选择文本,你能在 superuser.com 中问这个吗?” - 当然,我会在那里问这个问题。谢谢你告诉我。
python - 如何使用已安装的 twill 登录网站?
我刚刚在“StackOverflow”的一位非常支持成员的帮助下成功在我的计算机上安装了TWILL(你可以在这里查看)并尝试在斜纹文档页面上运行一个简单的示例(你可以看到那个页面在这里)。这是那个例子:
(来源:narod.ru)
假设我在www.slash.org上的用户名是lynxye,我的密码是哺乳动物。当我尝试将该示例代码输入到 Python 提示符中时,我只能键入并输入代码的第一行,因为当我单击“Enter”开始新行时,我会立即收到一些错误消息:
(来源:narod.ru)
当我尝试将此代码输入终端时也会发生同样的情况:
(来源:narod.ru)
我想我在这里错过了一些基础知识。也许,我需要创建一个包含该代码的文件,然后以某种方式运行该文件,但我真的不知道我需要在哪里创建该文件以及使用什么扩展名。
任何人都可以帮我解决这个问题吗?
python - 如何将所有斜纹命令放在 .py 文件中的一段代码中?
我刚刚开始探索TWILL。
Twill 是一种用于 Web 浏览的令人惊叹的脚本语言,它可以满足我的所有需求!!!
到目前为止,我一直在使用 Python shell 中的斜纹布(准确地说是IDLE (Python GUI)),并且我在那里做事的方式是一个接一个地执行命令(我的意思是,我输入一个命令,运行它,然后输入下一条命令):(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
(来源:narod.ru)
但是我不知道如何将所有这些命令放在一个 .py 文件中,以便它们都将自动执行。
斜纹布似乎有这样的可能性。这个来自斜纹文档页面的例子(你可以在这里看到)向我们展示了一段由几个命令组成的代码:(来源:narod.ru)
所以,我的问题是:如何将所有命令放在斜纹中?
更新1:
(此更新是我对 S.Mark 的回应)
你好,S.马克!!!对于迟到的回复,我深表歉意。首先,关于我的斜纹和 python 相关文件夹的位置的一些信息:
我的电脑上安装Python2.5的路径:C:\Python25
现在我电脑上的twill-0.9的路径:E:\tmp\twill-0.9
假设我希望自动执行以下命令:
此代码应查看 yahoo 页面,然后将其 HTML 代码保存到 result.html 文件中。因此,尝试按照您的指示,我首先创建了包含此代码的“test.txt”文件,该文件仅包含 2 行,并将该文件保存为 twill-0.9 文件夹中的“test.twill”,这意味着该文件的完整路径文件现在是 E:\tmp\twill-0.9\test.twill
然后我尝试以许多不同的方式将文件名作为参数传递给 twill-sh 命令,但它从未起作用(我一定是做错了什么):(
来源:narod.ru)
(来源:narod.ru)
但是你知道吗,我决定尝试一下,并创建了一个 test.py 文件,其中也只包含这两个命令。这个文件我也放在 twill-0.9 文件夹 (E:\tmp\twill-0.9\test.py) 中,然后我决定尝试使用 twill 的 runfile 命令从 twill shell 运行它,令人惊讶的是,它成功了!:(
来源:narod.ru)
运行后,我查看了我的 C:\Python25 文件夹,并在那里找到了新创建的 result.html 文件!
好吧,我在这里所做的只是使用 twill 命令从 twill shell 运行一个文件。虽然目前这正是我所需要的,但其他支持者(如下所示)建议我应该从 python shell 做所有事情,而不是从 twill shell,这是我仍然不知道该怎么做的事情。
我下一步将尝试在“Google App Engine”上运行类似的代码,但据我所知,那里只识别 Python,而不识别斜纹,这意味着如果我只知道如何在斜纹中做事,但是不在 python 中,我将无法让“Google App Engine”执行我的命令。
更新 2:
(2010 年 4 月 23 日星期五凌晨 3:48:15 (GMT+0.00))
(此更新是我对 S.Mark 的第二次回应)
似乎从命令提示符运行它也不成功:(
来源:narod.ru)
python - 如何将 twill 和 python 组合成一个可以在“Google App Engine”上运行的代码?
我已经在我的电脑上安装了斜纹布(之前安装了 Python 2.5)并且最近一直在使用它。
Python安装在我电脑的C盘:C:\Python25
斜纹文件夹(“twill-0.9”)位于此处:E:\tmp\twill-0.9
这是我一直在斜纹布中使用的代码:
这段代码帮助我登录到一个我有帐户的网站,记录该网站其他页面的 HTML 代码(我只能在登录后访问),并将其存储在名为“result.txt”的文件中。 txt”(当然,在使用此代码之前,我首先需要将“我的登录名”替换为我的真实登录名,“我的密码”替换为我的真实密码,“某个网站的登录页面 URL”和“来自其他页面的 URL该网站”带有该网站的真实 URL,数字 2 是该网站上用作该网站登录页面上的登录表单的表单编号)
我将这段代码存储在“twill-0.9”文件夹中的“test.twill”文件中:E:\tmp\twill-0.9\test.twill 我从命令提示符运行这个文件:python twill-sh test。斜纹布
现在,我也从“Google App Engine”安装了“Google App Engine SDK”,并且已经使用了一段时间。
例如,我一直在使用这段代码:
这段代码帮助我将短语“没有人检查垃圾邮件重复”转换为 md5 摘要。
现在,我如何将这两段代码放在一个可以在“Google App Engine”上运行的 Python 脚本中?
比方说,我希望我的代码从“Google App Engine”登录到一个网站,转到该网站上的另一个页面,记录其 HTML 代码(这就是我的斜纹代码所做的),然后将此 HTML 代码转换为它的 md5 摘要(这就是我的第二个代码所做的)。那么,如何将这两个代码组合成一个 python 代码呢?
我想,它应该以某种方式通过进口斜纹布来完成,但是怎么做呢?python 代码——由“Google App Engine”运行的代码——可以从互联网上的某个地方导入斜纹布吗?或者,也许斜纹已经安装在“Google App Engine”上?
更新1:
(此更新是我对 Wooble 的回答的回应)
这是包含__init
__.py 文件的所有文件夹的列表(在我的“twill-0.9”文件夹中)。(此列表中的某些文件夹位于此列表中也提到的其他文件夹中):
E:\twill-0.9\build\lib\twill\extensions\match_parse
E:\twill-0.9\build\lib\twill\extensions
E:\twill-0.9\build\lib\twill\other_packages\_mechanize_dist
E:\twill-0.9\build\lib\twill\other_packages
E:\twill-0.9\build\lib\twill
E:\twill-0.9\twill\extensions\match_parse
E:\twill-0.9\twill\extensions
E:\twill-0.9\twill\other_packages\_mechanize_dist
E:\twill-0.9\twill\other_packages
E:\斜纹-0.9\斜纹
python - 环境变量
我使用该模块mechanize
来登录站点。当我import twill.commands
没有任何其他明显用途时,会显示一些调试消息 [0] [1]。当我删除它时,这些消息就会消失。
我怎样才能看到环境中发生了什么变化,以便模拟它并消除这种依赖关系?
[0] 使用日志记录模块。[1] 更具体地说,我对一条Following HTTP-EQUIV=REFRESH
消息感兴趣。
更新:原来在 twill.commands 中存在一个错误,在尝试跟踪HTTP-EQUIV=REFRESH
标题时会产生错误。删除import twill.commands
和丑陋的工作后,一切顺利。
django - django-nose testrunner 不使用 --with-django 选项
运行nosetests 时,django-nose runner 不提供--with-django
选项 to nosetests
,因此我的nose + Twill 测试在尝试访问 URL 时失败:
当我--with-django
手动提供或设置NOSE_WITH_DJANGO=1
环境变量时,我的测试成功运行,但随后我收到以下异常:
nosetests --with-django
成功运行测试
python - 为什么 Python(带有斜纹)不想让我在这里登录到雅虎邮箱?
任何人都可以,请向我解释这里发生了什么。当我尝试登录雅虎邮箱时,Python 似乎拒绝工作(使用斜纹布):
更新 1:
(此更新是我对 Robus 的回答)
你好,罗布斯!!!
首先,我认为你写的时候是一个错字:
这是我所做的:去了 C:\Python26\Lib\site-packages\twill-0.9-py2.6.egg\twill\other_packages\
我认为您的意思是这条路径:“ C:\Python26\Lib\site-packages\twill\other_packages ”。否则,我看不到任何名为“ twill-0.9-py2.6.egg ”的文件夹/目录 - 只有一个具有此名称的文件(我认为是在安装 mechanize 期间下载的文件。)请告诉我我的假设是否错误 - 我可能在这里看不到非常明显的东西,因为我只是一个新手。
因此,按照您的指示,我这样做了:
我在我的电脑上找到了“ C:\Python25\Lib\site-packages\twill\other_packages_mechanize_dist ”(如您所见,我没有安装 python26,而是安装了 python 25 - 这也可能是一个问题)
将其名称更改为“ _mechanize_dist_backup ”(完整路径现在为“ C:\Python25\Lib\site-packages\twill\other_packages_mechanize_dist_backup ”)
将我下载并解压缩的“ mechanize-0.2.2 ”复制到“ C:\Python25\Lib\site-packages\twill\other_packages ”(完整路径为“ C:\Python25\Lib\site-packages\twill\other_packages\机械化-0.2.2 ")
将其名称更改为“ _mechanize_dist ”(完整路径为“ C:\Python25\Lib\site-packages\twill\other_packages_mechanize_dist ”)
从“ _mechanize_dist_backup ”复制“ ClientForm ”文件并将其粘贴到“ _mechanize_dist ”中(实际上,我在那里找到了两个名为“ ClientForm ”的文件:一个是python文件,另一个是编译的python文件 - 我复制并粘贴了两个他们)。
完成之后,我尝试运行所有这些命令,但一开始就卡住了——我现在什至无法导入斜纹:
系统似乎无法识别新创建的“ _mechanize_dist ”。
可能是因为我有 Python 25 而不是 Python 26?或者,也许,还有其他原因?
python - Using Twill from Python to open a link: " 'module' object has no attribute 'Popen' " What is it?
I have downloaded and installed Python 2.5.4 on my computer (my OS is Windows XP), downloaded “Goggle App Engine Software Development Kit”</a> and created my first application in Python, which was a directory named helloworld that contained a small python file with the same name (helloworld.py). Here are the contents of that small file:
Whenever I ran this application locally on my computer with “Goggle App Engine Software Development Kit”</a>, my browser (FireFox) always showed me a white window with Hello, world! written in it.
Then I downloaded Twill and unpacked it into helloworld directory. Having installed Twill properly, I was able to execute some small commands from Twill shell. For example, I could turn to a web page by some link:
Then I wanted to perform the same operation directly from Python (i.e. by means of using Twill from Python.) Here is what the Twill documentation page says about it:
twill's Python API
Using TwillBrowser Making extensions
twill is essentially a thin shell around the mechanize package. All twill commands are implemented in the commands.py file, and pyparsing does the work of parsing the input and converting it into Python commands (see parse.py). Interactive shell work and readline support is implemented via the cmd module (from the standard Python library).
Using twill from Python
There are two fairly simple ways to use twill from Python. (They are compatible with each other, so you don't need to choose between them; just use whichever is appropriate.)
The first is to simply import all of the commands in commands.py and use them directly from Python. For example,
This has the advantage of being very simple, as well as being tied directly to the documented set of commands in the commands reference.
So I decided to use this way. I deleted the previous contents of helloworld.py and gave it the new contents:
But when I tried to run that file on my computer with “Goggle App Engine Software Development Kit”</a>, my browser, instead of depicting the contents of www.python.org web site, gives me an error message: 'module' object has no attribute 'Popen' :
Please, take a look at the whole page here.
Here are the last three lines of that page:
: 'module' object has no attribute 'Popen'
Can anybody, please, explain to me what this Popen attribute is all about and what I am doing wrong here?
Thank you all in advance.
Update 1
(this update is my response to the second answer provided below by leoluk)
Hello, leoluk!!!
I tried doing it this way:
but it didn't work. I received this error message:
(You can see the whole page HERE)
Do You have any idea what it means and what went wrong?