Phantomjs - 在DOM操作后不更新page.content

时间:2016-11-14 11:17:57

标签: javascript jquery ajax phantomjs

    var page = require('webpage').create();
    page.open('http://xyz.ww', function() {
        page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
            var ua = page.evaluate(function() {
              $("span.disabled[name=comments]").click();
              return $(".content-right").html();
            });
           console.log(ua);    
           phantom.exit()

       });
    });

正如您所看到的,我尝试单击网页中的某个范围,该范围会触发Ajax调用并更改“.content-right”div的内容。但是当我写$(“。content-right”)。html()时,它会再次返回初始内容,就好像没有进行Ajax调用一样。我错过了什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

Ajax需要一些时间,但您会立即检查是否更新了右列。您应该等待点击后加载评论。

var page = require('webpage').create();
page.open('http://xyz.ww', function() {
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 

        page.evaluate(function() {
          $("span.disabled[name=comments]").click();
        });

        // Let's wait 3 seconds
        setTimeout(function(){
            var ua = page.evaluate(function() {
              $("span.disabled[name=comments]").click();
              return $(".content-right").html();
            });

            console.log(ua);    
            phantom.exit()

        }, 3000);

   });
});