2015-10-06 111 views
1

讓我們解釋發生了什麼,我解析一個html頁面以顯示其android應用程序中的內容。首先,我加載HTML與Android webview,然後我通過代碼獲取HTML代碼如下:無法使用Jquery和Jsoup訪問動態生成的元素

// load a webview 
     wb.postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); 

    // on page finish i will call a @JavascriptInterface 
     public void onPageFinished(WebView view, String url) { 

    view.loadUrl("javascript:window.HTMLOUT.processMain(
document.getElementsByTagName('html')[0].innerHTML);"); 

     } 




      @JavascriptInterface 
     class LoadListener{ 
       @JavascriptInterface 
       public void processMain(String html) 
       { 

        doc= Jsoup.parse(html); 
        getActivity().runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 

        //here i can parse doc that is a jsoup document and select elements 
     doc.select("#login > tbody > tr > td.error").text(); 
        }); 

我的問題:那裏是我的HTML頁面table動態添加到HTML(我不知道怎麼樣,追加?addchild?php?或...因爲我沒有訪問php代碼)。我用這行代碼選擇那張表! 但它返回null。

doc.select("#login > tbody > tr > td.error").text() 

那麼我該如何選擇該表?

回答

0

Jsoup不是瀏覽器。它是一個解析器。它不理解JavaScript並且無法運行它。因此,如果您的頁面通過Javascript動態地構建DOM元素,那麼您無法通過Jsoup訪問它。看看selenium webdriver如果你需要這個

+0

你是對的jsoup不能!但我解析的結果選擇整個頁面的JavaScript'view.loadUrl(「javascript:window.HTMLOUT.processMain( document.getElementsByTagName('html')[0] .innerHTML);」); '然後用jsoup解析它!我的問題是JavaScript不能選擇動態生成的元素呢? – Oli

+0

哦,那麼JSoup應該能夠解析這個。你能分享一下你試圖解析的生成的HTML嗎? – luksch

相關問題