当我调试并运行我的代码时,HtmlUnit的工作方式不同

时间:2016-04-20 08:02:55

标签: htmlunit

我正在使用HtmlUnit用js代码解析html。页面结构是(使用Chrome开发者工具): enter image description here

我的代码如下:

    WebClient wc=new WebClient(BrowserVersion.INTERNET_EXPLORER_11);
    wc.getOptions().setUseInsecureSSL(true);
    wc.getOptions().setJavaScriptEnabled(true);
    wc.getOptions().setCssEnabled(false);
    wc.getOptions().setThrowExceptionOnScriptError(false);
    wc.getOptions().setTimeout(10000);
    wc.getOptions().setDoNotTrackEnabled(false);
    HtmlPage page= wc.getPage(address);
    List<HtmlDivision> items=(List<HtmlDivision>)page.getByXPath(
            "/html/body/div[@id='wrapper']/div[@class='content_main']/div[@class='search_result']/div[@id='resultData']");
    System.out.println(items);
    if(items!=null && items.size()>0){
        HtmlDivision resultMain=items.get(0);
        List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
        System.out.println(appDivList);
        for(HtmlDivision resultItem:appDivList){
            try{
                DomElement appImgInfo=resultItem.getFirstElementChild();
                List<HtmlDivision> appInfoList=(List<HtmlDivision>)resultItem.getByXPath("./div[@class='one_right']");
                String appName=null;

问题是当我调试此代码时,它工作正常。当我运行此代码时,

List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");

不起作用,即appDivList为空,但是当我调试此代码时,appDivList不为空。 谁知道为什么?

更新

我在

之前添加了一些Thread.sleep代码
  List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");

更新的代码是:

        HtmlDivision resultMain=items.get(0);
        try{
        Thread.sleep(10000);
        }catch(Exception e){}
        List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
        System.out.println(appDivList);

有效!这是怎么发生的?

0 个答案:

没有答案