2016-02-08 18 views
5

JavaScript DOM manipülasyonları yapıldıktan sonra bir web sayfasının oluşturulmuş kaynağını almak için PhantomJS kullanıyorum. Bu web sayfasında SADECE <body> var ve başka bir şey yok. ÖnemliPhantomJS- localStorage ile açık sayfa varsayılan olarak

: Bu web sayfası sayfasını oluşturmak için tarayıcı en localStorage kullanır.

Sayfayı açmadan önce PhantomJS'deki LocalStorage'ı değiştirmek istiyorum. App.js

: söz konusu alanda bir sayfa açtığınızda belirli bir alan adına

var page = require('webpage').create(); 

page.open("https://sample.com") 
setTimeout(function(){ 
    // Where you want to save it  
    page.render("screenshoot.png") 
    // You can access its content using jQuery 
    var fbcomments = page.evaluate(function(){ 
     return $("body").contents().find(".content") 
    }) 
    phantom.exit(); 
}, 1000) 
+1

Sen ') (page.evaluate' iç bazı 'localStorage' özelliğini ayarlayabilirsiniz. Bunu denediniz mi? Sorun nedir? –

+1

@ArtjomB. düzenleme ve yorum için teşekkürler. Sorunum tarayıcı için localstorage ayarlandı. ** page.open (url) ** –

+0

Henüz ziyaret etmediğiniz bir sayfa için localStorage'ı nasıl kurabilirsiniz? – epascarello

cevap

5

localStorage kullanılabilir. Sen

  1. aynı etki alanında hedef URL açmak, ihtiyaca göre ilgilendiğiniz etki alanında bazı URL,
  2. değişiklik localStorage açabilirsiniz.

Bu şöyle olabilir:

page.open("https://sample.com/asdfasdf", function(){ 
    page.evaluate(function(){ 
     localStorage.setItem("something", "whatever"); 
    }); 

    page.open("https://sample.com", function(){ 
     setTimeout(function(){ 
      // Where you want to save it  
      page.render("screenshoot.png") 
      // You can access its content using jQuery 
      var fbcomments = page.evaluate(function(){ 
       return $("body").contents().find(".content") 
      }) 
      phantom.exit(); 
     },1000) 
    });  
}); 

O Ayrıca bazı URL ile kukla sayfasını kullanabilirsiniz 1. adımda tam sayfa açmak için değil de mümkündür.

page.setContent("", "https://sample.com"); // doesn't actually open any page 

page.evaluate(function(){ 
    localStorage.setItem("something", "whatever"); 
}); 

page.open("https://sample.com", function(){ 
    setTimeout(function(){ 
     // Where you want to save it  
     page.render("screenshoot.png") 
     // You can access its content using jQuery 
     var fbcomments = page.evaluate(function(){ 
      return $("body").contents().find(".content") 
     }) 
     phantom.exit(); 
    }, 1000) 
});  
+1

Doğru. Bu benim için çalışıyor. Teşekkürler @Artjom B. –

0

Sorunumu Friend's Help ile çözdüm. Benim çözümüm:

Dikkat: Tam yükleme sayfası için Zaman Aşımı 10000 (10 saniye) ayarlıyorum.

var page = require('webpage').create(); 

page.open("https://sample.com", function(){ 
    page.evaluate(function(){ 
     var i = 0, 
     oJson = jsonData, 
     sKey; 
     localStorage.clear(); 

     for (; sKey = Object.keys(oJson)[i]; i++) { 
      localStorage.setItem(sKey,oJson[sKey]) 
     } 
    }); 

    page.open("https://sample.com", function(){ 
     setTimeout(function(){ 
     page.render("screenshoot.png") 
      // Where you want to save it  
      console.log(page.content); //page source 
      // You can access its content using jQuery 
      var fbcomments = page.evaluate(function(){ 
       return $("body").contents().find(".content") 
      }) 
      phantom.exit(); 
     },10000) 
    });  
});