Language agnostic 网络自动化

Language agnostic 网络自动化,language-agnostic,automation,Language Agnostic,Automation,我正在开发一个旧的基于web的应用程序和另一个应用程序之间的接口。那个旧的基于web的应用程序工作得很好,但不存在任何可与之通信的API 有没有一种编程方式可以这样说web表单:在这个字段中输入这个值,在另一个字段中输入这个值,然后提交表单 更新:我正在寻找这样的东西: WebAutomation w = new WebAutomation("http://apphost/report"); w.forms[0].input[3].value = 123; w.forms[0].input[4]

我正在开发一个旧的基于web的应用程序和另一个应用程序之间的接口。那个旧的基于web的应用程序工作得很好,但不存在任何可与之通信的API

有没有一种编程方式可以这样说web表单:在这个字段中输入这个值,在另一个字段中输入这个值,然后提交表单

更新:我正在寻找这样的东西:

WebAutomation w = new WebAutomation("http://apphost/report");
w.forms[0].input[3].value = 123;
w.forms[0].input[4].value = "hello";
Response r = w.forms[0].submit();
...
use WWW::Mechanize;
my $agent = WWW::Mechanize->new;
$agent->get("http://apphost/report");
my $response = $agent->submit_form(
    with_fields => {
        field_1_name => 123,
        field_2_name => "hello",
    },
);
在.NET中:

在ruby中:

跨平台:

在.NET中:

在ruby中:


跨平台:

您可以,但您必须模拟POST请求。字段(文本框、单选按钮等)作为键值对传输回资源。您需要对此资源发出请求(无论表单标记的提交操作中使用哪一个),并将所有字段值对放入请求后的有效负载中。 下面是一个很好的程序,可以查看传输的值:
或者,您可以使用Firebug,一个免费的Firefox扩展。

您可以,但您必须模拟POST请求。字段(文本框、单选按钮等)作为键值对传输回资源。您需要对此资源发出请求(无论表单标记的提交操作中使用哪一个),并将所有字段值对放入请求后的有效负载中。 下面是一个很好的程序,可以查看传输的值:
或者,您可以使用Firebug,一个免费的Firefox扩展。

尽管您的问题上有标签,但答案将是高度特定于语言的。根据您愿意实施的解决方案的复杂程度以及您希望获得的结果的灵活性,还将有各种各样的解决方案

一方面,你可以在很短的时间内用Python之类的东西完成很多事情,但另一方面,你可以通过使用COM对象(例如,当然,仅限Windows)自动化浏览器,从而真正深入了解并掌握很多控制权

或者,正如LoveMeSomeCode所建议的那样,您可以真正地将头撞到混凝土上,开始伪造POST请求,但是如果服务器正在对表单数据进行任何前端处理,那么请好运地弄清楚服务器期望得到什么

编辑:


如果你正在寻找一种可以快速升级的东西,还有一个选择是使用a的IE模块,它基本上在InternetExplorer实例上提供了一个编程接口(当然,它下面都是COM)。请记住,这可能是您可以选择的最不受支持的选项。我个人使用它来制作概念验证自动化套件,然后将其迁移到更健壮的C#实现中,我自己处理COM调用。

尽管您的问题上有标签,但答案将是高度特定于语言的。根据您愿意实施的解决方案的复杂程度以及您希望获得的结果的灵活性,还将有各种各样的解决方案

一方面,你可以在很短的时间内用Python之类的东西完成很多事情,但另一方面,你可以通过使用COM对象(例如,当然,仅限Windows)自动化浏览器,从而真正深入了解并掌握很多控制权

或者,正如LoveMeSomeCode所建议的那样,您可以真正地将头撞到混凝土上,开始伪造POST请求,但是如果服务器正在对表单数据进行任何前端处理,那么请好运地弄清楚服务器期望得到什么

编辑:

如果你正在寻找一种可以快速升级的东西,还有一个选择是使用a的IE模块,它基本上在InternetExplorer实例上提供了一个编程接口(当然,它下面都是COM)。请记住,这可能是您可以选择的最不受支持的选项。我个人使用它来生成概念验证自动化套件,然后将其迁移到一个更健壮的C#实现中,我自己处理COM调用。

Perl模块正是这样做的。你的 示例如下所示:

WebAutomation w = new WebAutomation("http://apphost/report");
w.forms[0].input[3].value = 123;
w.forms[0].input[4].value = "hello";
Response r = w.forms[0].submit();
...
use WWW::Mechanize;
my $agent = WWW::Mechanize->new;
$agent->get("http://apphost/report");
my $response = $agent->submit_form(
    with_fields => {
        field_1_name => 123,
        field_2_name => "hello",
    },
);
还有一个Python端口,我想许多其他语言也有类似的库。

Perl模块正是这样做的。你的 示例如下所示:

WebAutomation w = new WebAutomation("http://apphost/report");
w.forms[0].input[3].value = 123;
w.forms[0].input[4].value = "hello";
Response r = w.forms[0].submit();
...
use WWW::Mechanize;
my $agent = WWW::Mechanize->new;
$agent->get("http://apphost/report");
my $response = $agent->submit_form(
    with_fields => {
        field_1_name => 123,
        field_2_name => "hello",
    },
);

还有一个Python端口,我想许多其他语言都有类似的库。

您能更详细地介绍一下,特别是关于第2段的内容吗?您能更详细地介绍一下,特别是关于第2段的内容吗?前两个是测试框架,第三个是基于宏的,我不确定它们是否真的适合他想执行的那种例行自动化。Selenium编程很难完成这样的任务。我以前做过,但我对selenium相当了解,但它不是为这类东西设计的。你可以使用selenium IDE(它是一个firefox插件)来记录你想要的东西。然后你不必写代码(虽然生成的代码可能不是最好的)前两个是测试框架,第三个是基于宏的,我不确定它们是否真的适合他想执行的那种例行自动化。Selenium很难编程来完成这样的任务。我以前做过,但我对selenium相当了解,但它不是为这类东西设计的。你可以使用selenium IDE(它是一个firefox插件)来记录你想要的东西。然后您就不必编写代码(尽管生成的代码可能不是最好的)