2

我需要创建一个自动化流程(最好使用 Java),它将:

  1. 打开具有特定 URL 的浏览器。
  2. 使用指定的用户名和密码登录。
  3. 按照页面上的链接之一。
  4. 刷新浏览器。
  5. 登出。

这基本上是为了收集一些统计数据进行分析。每次用户点击链接时,都会为该特定用户生成一堆数据并保存在数据库中。我需要做的是,使用大约 10 个假用户,每 5-15 分钟 ping 一次页面。

你能想出简单的方法吗?必须有一个替代无休止的登录 - 刷新 - 注销手动过程......

4

4 回答 4

5

尝试

于 2010-07-13T09:27:46.197 回答
1

如果需要,请使用HtmlUnit

  1. 快速地
  2. 简单的

基于 Java 的 Web 交互/爬网。

例如:这里是一些显示一堆输出的简单代码和一个访问加载页面的所有 IMG 元素的示例。

public class HtmlUnitTest {
  public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage("http://www.google.com");
    System.out.println(page.getTitleText());

    for (HtmlElement node : page.getHtmlElementDescendants()) {
      if (node.getTagName().toUpperCase().equals("IMG")) {
        System.out.println("NAME: " + node.getTagName());
        System.out.println("WIDTH:" + node.getAttribute("width"));
        System.out.println("HEIGHT:" + node.getAttribute("height"));
        System.out.println("TEXT: " + node.asText());
        System.out.println("XMl: " + node.asXml());
      }
    }
  }
}

示例 #2访问命名输入字段并输入数据/单击:

final HtmlPage page = webClient.getPage("http://www.google.com");

HtmlElement inputField = page.getElementByName("q");
inputField.type("Example input");

HtmlElement btnG = page.getElementByName("btnG");
Page secondPage = btnG.click();

if (secondPage instanceof HtmlPage) {
  System.out.println(page.getTitleText());
  System.out.println(((HtmlPage)secondPage).getTitleText());
}

注意:您可以在任何 Page 对象上使用 page.refresh() 。

于 2010-07-13T09:33:06.997 回答
1

它不是Java,而是Javascript。您可以执行以下操作:

window.location = "<url>"
document.getElementById("username").value = "<email>";    
document.getElementById("password").value = "<password>";

document.getElementById("login_box_button").click();

...

ETC

使用这种结构,您可以轻松覆盖 1-3。为页面刷新添加一些 for 循环就完成了。

于 2010-07-13T09:52:47.343 回答
0

你可以使用Jakarta JMeter

于 2010-07-13T09:27:54.660 回答