2012-11-20 17 views
5

Ich habe gerade Zombie.js getestet und ich lasse es die Login-Seite auf StackOverflow besuchen. Mein Code ist wie folgt:Zombie.js gibt keinen vollständigen HTML-Code zurück

var Browser = require("zombie"); 

// Load the page from localhost 
browser = new Browser() 
browser.visit("http://stackoverflow.com/users/login/", function() { 
    browser.wait(3000, function(){ 
     console.log(browser.html()); 
     console.log(browser.success); 
    }); 
}); 

ich um versucht, Blick, und ich weiß, dass Zombie.js Skripte ausgeführt und Art komprimiert, die HTML, aber in diesem Fall die gesamte body des Codes fehlt.

Ich glaube nicht, das ist relevant, aber der HTML-Code zurückgegeben wird:

<html><head> 

    <title>Log In - Stack Overflow</title> 
    <link rel="shortcut icon" href="http://cdn.sstatic.net/stackoverflow/img/favicon.ico" /> 
    <link rel="apple-touch-icon" href="http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png" /> 
    <link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml" /> 


    <script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script><script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript" src="http://cdn.sstatic.net/js/stub.js?v=8a629d6e9fb6"></script> 
    <link rel="stylesheet" type="text/css" href="http://cdn.sstatic.net/stackoverflow/all.css?v=24fdd40e5473" /> 

    <meta http-equiv="X-XRDS-Location" content="http://stackoverflow.com/yadis" /> 
    <script src="http://cdn.sstatic.net/Js/third-party/openid-jquery.js?v=8b3167d0ee55" type="text/javascript"></script> 
    <script type="text/javascript"> 
     document.write('<style type="text/css">.login-page .script-only { display: block; }<\/style>'); 
     $(function() { 
      openid.init('openid_identifier', '', 'http://cdn.sstatic.net/Img/openid/openid-logos.png?v=8', true); 
     }); 
    </script> 


    <script type="text/javascript"> 
     StackExchange.init({"stackAuthUrl":"https://stackauth.com","serverTime":1353439370,"styleCode":true,"enableUserHovercards":true,"site":{"name":"Stack Overflow","description":"Q&A for professional and enthusiast programmers","isNoticesTabEnabled":true,"recaptchaPublicKey":"6LdchgIAAAAAAJwGpIzRQSOFaO0pU6s44Xt8aTwc","enableSocialMediaInSharePopup":true},"user":{"fkey":"8074e87bcb0a1a15cc69db799d304930","isAnonymous":true}}); 
     StackExchange.using.setCacheBreakers({"js/prettify-full.js":"c862bf93b3ec","js/moderator.js":"37bba549a03e","js/full-anon.js":"bcd6f2e0d542","js/full.js":"87618162bac4","js/wmd.js":"89ec12ce09df","js/third-party/jquery.autocomplete.min.js":"e5f01e97f7c3","js/mobile.js":"6eb68240242f","js/help.js":"fc9fb0517db2","js/tageditor.js":"450c9e8426fc","js/tageditornew.js":"9ac6c13a3a7f","js/inline-tag-editing.js":"30f72b99548b","js/revisions.js":"8c6bcd93b7fe","js/review.js":"37dd8dc83788"}); 

    </script> 
</head> 
<body class="login-page" style="cursor: default;"><style type="text/css">.login-page .script-only { display: block; }</style></body></html> 

EDIT: Nur bemerkt, dass dies durch den document.write Aufruf im Skript der Seite verursacht werden.

Antwort

5

Mit der runScripts: false Option für den Browser behoben, weil die document.write den Körper überschrieben.

Ich habe an issue on their Github geöffnet, weil dies nicht das Verhalten ist, das andere Browser anzeigen.

+0

verifizierter const Browser = neuer Browser ({runScripts: false}); – 4m1r