我正在开发一个旧的基于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();
...发布于 2009-03-04 23:37:30
尽管你的问题上有标签,但答案将是非常具体的语言。还会有各种各样的解决方案,这取决于您愿意实现的解决方案的复杂程度以及您正在寻找的结果的灵活性。
一方面,您可以在很短的时间内完成一些类似于Python的机械化,但另一方面,您可以通过使用SHDocVw (当然只有SHDocVw)这样的COM对象来实现浏览器的自动化,从而获得更多的控制。
或者,就像LoveMeSomeCode建议的那样,你真的可以撞到具体的东西,开始伪造帖子请求,但是如果服务器正在对表单数据做任何前端处理,那么祝你好运。
编辑:
还有一种选择,如果你想要快速跟上速度的话,那就是使用AutoIt的IE模块,它基本上在Internet的一个实例上提供了一个编程接口(当然,它的底层是所有的COM )。记住,这可能是你能选择的最不受支持的选项。我个人用它来证明--概念自动化套件--然后迁移到一个更健壮的C#实现中,在那里我自己处理COM调用。
发布于 2009-03-04 23:03:12
在.NET:http://watin.sourceforge.net/中
红宝石:http://wtr.rubyforge.org/
跨平台:http://seleniumhq.org/
发布于 2009-03-04 23:03:30
你可以,但你必须模拟一个帖子请求。字段(文本框、单选按钮等)作为键值对传输回资源。您需要对此资源提出请求(无论在表单标记的SUBMIT操作中使用哪一个),并将所有字段值对放在一个POST有效负载中,不需要请求。这里有一个很好的程序来查看哪些值正在被传输:http://www.httpwatch.com或者,您可以使用Firebug,一个免费的火狐扩展。
https://stackoverflow.com/questions/612866
复制相似问题