7

在交互式控制台应用程序的糟糕时代,Don Libes 创建了一个名为Expect的工具,它使您能够编写与这些应用程序交互的 Tcl 脚本,就像用户一样。Expect 有两个巨大的好处:

  • 可以编写交互脚本,否则必须手动重复繁琐的操作。一个典型的例子是拨号上网地狱(从 PPP 之前的日子开始)。

  • 作为回归套件的一部分,可以编写脚本以编程方式测试自己的交互式应用程序。

如今,大多数交互式应用程序都在 Web 上,而不是在控制台上。因此我的问题是:是否有任何工具能够以编程方式与网页和 Web 表单交互,就像 Expect 提供以编程方式与控制台应用程序交互的能力一样?

(我所知道的最接近的是Chickenfoot。)

4

5 回答 5

8

您可能正在寻找

于 2009-03-04T04:07:22.390 回答
5

我将Selenium RC 与 Python 结合使用,以编程方式驱动网页交互。这使我能够编写相当广泛的用户测试,其中驱动表单和输入并测量其结果。

查看 Firefox 上的Selenium IDE(如上所述)。它允许您使用 IDE 本身或远程控制应用程序在浏览器中记录测试并播放它们。

于 2009-03-04T04:08:51.997 回答
5

Perl Mechanize非常适合这个确切的问题。

HTTPS 和一些身份验证问题有时很棘手。我将在未来发布一些关于这些的问题。

于 2009-03-04T19:08:16.123 回答
5

我在前世做过大量的 Expect 工作,并且一直认为 Don Libes 的 Expect 书是我见过的写得最好、最有启发性的技术书籍之一。

毫无疑问,我会说 Perl 的 WWW::Mechanize 库是您想要的。我在上面注意到您在查找文档时遇到了麻烦。有很好的文档!在 search.cpan.org 上查找该模块的发行版,并查看其中包含的所有内容。有一个常见问题解答、带有示例的食谱等。另外,我总是能够在网络上获得帮助。如果您无法在此处获得它,请尝试在 use.perl.org 或 perlmonks.org 上。WWW::Mechanize 的作者 Andy Lester出现在 Stack Overflow 上。(他也是一个非常友好和乐于助人的人。)

我相信 WWW::Mechanize 也有一个类似于 Expect 的 autoexpect 程序的程序:你设置一个代理进程运行这个程序作为服务器,将你的浏览器指向它作为代理,执行你想要自动化的操作,然后代理程序为您提供了一个 WWW::Mechanize 程序,供您用作项目的基础。(如果它像 autoexpect 一样工作,您肯定会想从那里进行修改。)

如上所述,WWW::Mechanize一个浏览器(更准确地说,它是一个 Web 客户端或 http 客户端),恰好是可编程的。我上次查看时,甚至有工作正在进行中以使其支持 JavaScript。

于 2009-04-02T20:23:20.660 回答
1

除了 Selenium,如果你正在做 Ruby/Rails 的事情,还有Webrat

于 2009-03-04T19:12:24.413 回答