0

URL から動的ページを取得しようとしています。私はJavaで働いています。Selenium を使用してこれを実行しましたが、多くの時間がかかります。Seleniumのドライバの起動に時間がかかるため。そこで、GUILess Browser である HtmlUnit に移行しました。しかし、私の HtmlUnit 実装にはいくつかの例外があります。

質問:-

  1. HtmlUnit の実装を修正するにはどうすればよいですか。
  2. Selenium によって生成されたページは、HtmlUnit によって生成されたページに似ていますか? [ どちらも動的かどうか? ]

私のセレンコードは:-

 public static void main(String[] args) throws IOException {

 // Selenium
 WebDriver driver = new FirefoxDriver();
 driver.get("ANY URL HERE");  
 String html_content = driver.getPageSource();
 driver.close();

 // Jsoup makes DOM here by parsing HTML content
 Document doc = Jsoup.parse(html_content);

 // OPERATIONS USING DOM TREE

}

HtmlUnit コード:-

package XXX.YYY.ZZZ.Template_Matching;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.junit.Assert;
import org.junit.Test;

public class HtmlUnit {

    public static void main(String[] args) throws Exception {
        //HtmlUnit htmlUnit = new  HtmlUnit();
        //htmlUnit.homePage();
        WebClient webClient = new WebClient();
        HtmlPage currentPage = webClient.getPage("http://www.jabong.com/women/clothing/womens-tops/?source=women-leftnav");
        String textSource = currentPage.asText();
        System.out.println(textSource);
    }
}

それは例外を示しています:-

ここに画像の説明を入力

4

1 に答える 1

1

1: HtmlUnit の実装を修正するにはどうすればよいですか。

スタック トレースを見ると、JavaScript エンジンが、Javascript の「未定義」値の属性にアクセスしようとした JavaScript を実行したようです。正しい場合、それは HtmlUnit コードではなく、テストしている JavaScript のバグです。

2: Selenium によって生成されたページは、HtmlUnit によって生成されたページに似ていますか?

それは意味がありません。Selenium も HtmlUnit もページを「生成」しません。このページは、テストしているサーブ コードによって生成されます。

HtmlUnit が Javascript を埋め込んだコードを処理できるかどうかを尋ねている場合は、Javascript を実行しようとしているという明確な証拠がスタックトレースにあります。

于 2013-04-06T13:30:43.143 に答える