2013-03-06 114 views
0

我正在使用Process p=Runtime.getRuntime().exec来打开网页。我将使用什么事件处理程序来使用Java单击打开的网页上的按钮?单击网页上的按钮

+1

您试图完成的更大目标是什么?你有没有考虑过使用无头浏览器呢? – 2013-03-06 05:02:42

+3

[Selenium]的工作(http://openwritings.net/public/selenium/first-selenium-application-java)! – 2013-03-06 05:02:50

回答

2

没有,真的。您对所启动的流程没有任何如此细致的控制;您所获得的只是流程中的输入,输出和错误流。

如果你想与Java网页交互(但不在屏幕上显示),你可以看看HtmlUnit

您可以配置HtmlUnit以模拟特定的浏览器(用户代理标头,cookie策略等)。

如果一切都失败了,你可以编写一个小的JavaScript控制器,并直接在浏览器中打开它,而不是目标网页。然后,JavaScript控制器可以与您的应用程序进行对话,获取指令(如要导航到哪个页面)并对这些指令采取行动。 Selenium是个不错的选择,但可能需要您安装浏览器插件。

+0

我想完成的是登录surveymonkey并下载一个excel文件。我的程序已经可以做到这一点,但由于缺乏浏览器,Bluecoat安全性无法在我的工作域中使用。所以我想如果我可以从浏览器打开并控制它,它会以这种方式工作。思考? – patrick 2013-03-06 05:07:40

+0

@patrick - 他们究竟是如何检测到“缺少浏览器”?无论如何,我已经用另一种方法更新了我的答案 – radai 2013-03-06 05:13:25

+0

我认为javascript可能会使这个项目失控。也许不是。但我缺少浏览器的意思是与浏览器中的用户凭证相关联的身份验证证书。如果您认为它有帮助,我可以向您发布我得到的错误。因为我的代码能正常工作,所以当我尝试从我的工作域中运行它时就不行。 – patrick 2013-03-06 05:28:52

0

加入来自radai的回答和评论

a。 “有计划已经这样做了,但由于缺乏浏览器,因为Bluecoat的安全问题,它不适用于我的工作领域” - 这不是因为缺少浏览器。这是因为你的java进程没有代理凭证来打开页面。来自该工具的http调用通过您的代理进行导向。您可以尝试设置具有所需属性的环境。

如果您正在运行的命令行工具 - 你可以尝试这样的事情

JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800 
java ${JAVA_FLAGS} <java_class_to_run> 

湾如果您打算重新创建该工具 - jsoup是另一个不错的选择

+0

我打算从命令行运行。我会检查这一点。 – patrick 2013-03-06 05:40:38

+0

你可以更具体一点如何添加代理?我有点不清楚吗? – patrick 2013-03-06 05:44:51

+0

所有来自您的机器/网络中任何机器的电话都必须通过bluecoat代理才能打到外部网站。在您的工具中,由于您没有提供代理服务器的详细信息,因此该呼叫不会脱离您的网络。 – Richie 2013-03-06 05:48:52