Testing 是否有唐·利伯斯';s*expect*用于编写网页交互脚本的工具?

Testing 是否有唐·利伯斯';s*expect*用于编写网页交互脚本的工具?,testing,scripting,interactive,expect,Testing,Scripting,Interactive,Expect,在交互式控制台应用程序的糟糕年代,Don Libes创建了一个名为的工具,它使您能够像用户一样编写与这些应用程序交互的Tcl脚本。Expect有两大好处: 可以编写交互脚本,否则这些交互将不得不手工、乏味地重复。一个典型的例子是拨号上网地狱(在PPP之前) 作为回归套件的一部分,可以编写脚本以编程方式测试自己的交互式应用程序 如今,大多数交互式应用程序都在web上,而不是在控制台上。因此,我的问题是:是否有任何工具能够以编程方式与网页和web表单交互,就像Expect能够以编程方式与控制台应

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

  • 可以编写交互脚本,否则这些交互将不得不手工、乏味地重复。一个典型的例子是拨号上网地狱(在PPP之前)

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

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

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

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

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

Perl非常适合这个问题


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

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

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

我想说,Perl的WWW::Mechanize库就是您想要的。我在上面注意到,您在查找文档时遇到了困难。有很好的文档!在search.cpan.org上查找模块的分发版,看看它附带了什么。有一个常见问题解答,有例子的食谱,等等。另外,我总是能够在网上得到帮助。如果您在这里找不到,请访问use.perl.org或perlmonks.org。WWW::Mechanize的作者安迪·莱斯特是。(他也是一个全面友好、乐于助人的人。)

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


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

我浏览了链接——我敢问,是否有“用户友好”的文档?Mechanize很棒,但你必须意识到它与预期的不太相似,而与终端类似。呃,这是一个可怕的类比。让我们试试这个:Mechanize不会自动运行浏览器,Mechanize是一个(可编程的)浏览器。如果你知道它可能非常强大,呃,我没有空间了。是的,这是一个很好的观点,这可能就是为什么在页面非常复杂的地方会变得有点棘手的原因,因为它在firefox上看起来可能是单向的,但mechanize看到页面“mechanize”的方式。但无论如何,编程也很容易。my$agent=WWW::Mechanize->new()$代理->获取(')$代理->表格编号('3')$代理->字段('user',$form->{user})$代理->字段('password',$form->{password})$代理->提交();我想与任意网站互动。听起来Webrat只适用于使用Ruby实现的站点,我可以访问这些站点的源代码。对的