不能使用Jquery和Jsoup访问动态生成的元素

Can't access dynamically generated element with Jquery and Jsoup

本文关键字:动态 元素 访问 Jsoup Jquery 不能      更新时间:2023-09-26

让我们解释一下发生了什么,我正在解析一个HTML页面,以在我的android应用程序中显示其内容。首先,我加载html与android webview,然后我得到html代码的代码如下:

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

我的问题:有一个table在我的html页面是动态添加到html(我不知道如何,追加?addchild吗?php吗?还是……因为我没有访问PHP代码)。我用这行代码选择那个表!返回null

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

那么我如何选择这个表??

Jsoup不是浏览器。它是一个解析器。它不理解JavaScript,也不能运行它。因此,如果您的页面通过Javascript动态构造DOM元素,则无法使用Jsoup访问它。如果您需要这个

,请查看selenium webdriver。