5

如何以编程方式单击 Java 中的网页按钮?

给定这个按钮:

 <div id="titlebutton" >Button</div>

在 Javascript 中,它会像这样工作:

var newWin = window.open(siteYouHaveAccessTo);
newWin.document.getElementById('titlebutton').click();

我想知道如何在 Java 而不是 Javascript 中做到这一点(有没有办法单独使用 Java 或者我必须导入/使用 Javascript?)。

编辑:

单击按钮将导致调用一个名为 setText() 的函数。我不确定如何发送与此功能类似的请求?如果我粘贴功能代码会有帮助吗?

4

3 回答 3

7

您不能“以编程方式”单击仅使用 Java 的按钮,这就是我们使用 JavaScript 的原因。如果您想控制浏览器,例如单击按钮和填充文本字段,则必须使用自动化工具。使用 Java 的自动化工具是 Selenium。这通常用于测试自动化,但会做你想做的事。

http://docs.seleniumhq.org/

于 2013-05-16T16:03:02.640 回答
0

我不确定这是否是您正在寻找的,但如果您想要做的只是在 Java 中发出 HTTP 请求,这应该可以解决问题:

HttpURLConnection urlConnection = null;
URL urlToRequest = new URL("http://yoursite.com/yourpage?key=val&key1=val1");
urlConnection = (HttpURLConnection) urlToRequest.openConnection();
urlConnection.setConnectTimeout(CONN_TIMEOUT);
urlConnection.setReadTimeout(READ_TIMEOUT);

// handle issues
int statusCode = urlConnection.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
    // handle unauthorized (if service requires user login)
} else if (statusCode != HttpURLConnection.HTTP_OK) {
    // handle any other errors, like 404, 500,..
}

InputStream in = new BufferedInputStream(urlConnection.getInputStream());

// Process response

用您自己的值和与您网站的 URL 相匹配的 URL 替换超时常量。您可以通过单击按钮以键/值对的形式将要发送的任何数据作为 URL 中的查询参数发送。

于 2013-05-16T14:15:32.553 回答
0

如果您正在寻找浏览器自动化,可以使用 selenium 或 java.awt.Robot

机器人可以向操作系统发送“点击”。已经将它与 vbs 脚本一起使用,首先确保特定窗口具有焦点,然后发送文本和点击,最后保存结果......不是很好,好像页面改变了东西,那么你需要进行调整。但是我做这个的人用了4年。

于 2013-05-16T16:29:25.643 回答