[英]Accessing html generated by Javascript with htmlunit -Java
我試圖能夠測試一個使用javascript來呈現大部分HTML的網站。 使用HTMLUNIT瀏覽器,您如何能夠訪問由javascript生成的html? 我正在瀏覽他們的文檔,但不確定最佳方法是什么。
WebClient webClient = new WebClient();
HtmlPage currentPage = webClient.getPage("some url");
String Source = currentPage.asXml();
System.out.println(Source);
這是一個簡單的方法來獲取頁面的HTML,但你會使用domNode或其他方式來訪問javascript生成的HTML嗎?
你必須花一些時間來執行JavaScript。
檢查下面的示例工作代碼。 bucket
div
不在原始源中。
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class GetPageSourceAfterJS {
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); /* comment out to turn off annoying htmlunit warnings */
WebClient webClient = new WebClient();
String url = "http://www.futurebazaar.com/categories/Home--Living-Luggage--Travel-Airbags--Duffel-bags/cid-CU00089575.aspx";
System.out.println("Loading page now: "+url);
HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(30 * 1000); /* will wait JavaScript to execute up to 30s */
String pageAsXml = page.asXml();
System.out.println("Contains bucket? --> "+pageAsXml.contains("bucket"));
//get divs which have a 'class' attribute of 'bucket'
List<?> buckets = page.getByXPath("//div[@class='bucket']");
System.out.println("Found "+buckets.size()+" 'bucket' divs.");
//System.out.println("#FULL source after JavaScript execution:\n "+pageAsXml);
}
}
輸出:
Loading page now: http://www.futurebazaar.com/categories/Mobiles-Mobile-Phones/cid-CU00089697.aspx?Rfs=brandZZFly001PYXQcurtrayZZBrand
Contains bucket? --> true
Found 3 'bucket' divs.
使用的HtmlUnit版本:
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.12</version>
</dependency>
假設問題是由於AJAX調用而由JavaScript生成的HTML,您是否嘗試過HtmlUnit常見問題解答中的“AJAX不起作用”部分 ?
關於如何在JavaScript中使用HtmlUnit的方法中還有一節。
如果您的問題沒有在這里得到解答,我認為我們需要一些更具體的細節才能提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.