2

次のような自動プロセス(できればJavaを使用)を作成する必要があります。

  1. 特定のURLでブラウザを開きます。
  2. 指定されたユーザー名とパスワードを使用してログインします。
  3. ページ上のリンクの1つをたどってください。
  4. ブラウザを更新します。
  5. ログアウト。

これは基本的に、分析のためにいくつかの統計を収集するために行われます。ユーザーがリンクをたどるたびに、この特定のユーザー用に大量のデータが生成され、データベースに保存されます。私がする必要があるのは、約10人の偽のユーザーを使用して、5〜15分ごとにページにpingを実行することです。

あなたはそれをする簡単な方法についていじくり回すことができますか?無限のlogin-refresh-logout手動プロセスに代わるものが必要です...

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();

..。

この種の構造を使用すると、1〜3を簡単にカバーできます。ページの更新のためにいくつかのforループをスローすると、完了です。

于 2010-07-13T09:52:47.343 に答える
0

JakartaJMeterを使用できます

于 2010-07-13T09:27:54.660 に答える