2016-07-19 7 views
8

webdriver.io का उपयोग करके मेरे प्रतिक्रिया ऐप का परीक्षण करने के लिए, मुझे इसे phantomjs का उपयोग करके लॉन्च करने की आवश्यकता है।मैं फ़ैंटॉमजेएस 2.1.1 का उपयोग करके अपने ReactJS एप्लिकेशन को प्रस्तुत करने में सक्षम क्यों नहीं हूं?

पहले मैंने सोचा कि समस्या webdriver.io थी लेकिन मुझे एहसास हुआ है कि जब मैं प्रस्तुत करने का प्रयास करता हूं तो फैंटॉमजेएस एक खाली पृष्ठ देता है।

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

var output_file = 'example.png', url = args[1]; 
t = Date.now(); 

var width = 1440; 
var height = 900; 
page.viewportSize = { width: width, height: height }; 
page.paperSize = { 
    format: 'A4', 
    orientation: 'landscape', 
    margin: { left: '1cm', right: '1cm', top: '1cm', bottom: '1cm' } 
}; 

console.log(url); 

page.onConsoleMessage = function(msg, lineNum, sourceId) { 
    console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")'); 
}; 

page.onLoadFinished = function (status) { 
    window.setTimeout(function() { 
     try { 
      page.evaluate(function (w, h) { 
       document.body.style.width = w + 'px'; 
       document.body.style.height = h + 'px'; 
       }, width, height); 
      t = Date.now() - t; 
      console.log('Loading ' + url); 
      console.log('Loading time ' + t + ' msec'); 
      page.clipRect = {top: 0, left: 0, width: width, height: height}; 
      page.render(output_file); 
     } 
     catch (e) { 
      status = e.message; 
     } 
     console.log(status + ';;' + output_file); 
     phantom.exit(); 
    }, 10000); 
}; 

try { 
    page.open(url); 
    console.log('loading'); 
} 
catch (ex) { 
    console.log(ex.message); 
    phantom.exit(); 
} 

जो मैं इस तरह का शुभारंभ:

कुछ परीक्षण करने के लिये मैं इस जावास्क्रिप्ट फ़ाइल लिखा phantomjs test.js http://localhost:8080

लेकिन कोई फर्क नहीं पड़ता कि मुझे क्या करना, example.png हमेशा खाली है।

मैं वर्तमान में प्रतिक्रिया 0.14.7 और phantomjs 2.1.1 का उपयोग करता हूं। क्या किसी के पास कोई विचार है कि मैं अपना ऐप क्यों नहीं दे सकता?

पुनश्च: मैं उल्लेख नहीं किया है, लेकिन मैं क्रोम या फ़ायरफ़ॉक्स

+0

अच्छा सवाल! मेरे पास अभी एक ही समस्या है! –

+0

वर्तमान में आपके प्रश्न में वेबड्राइवर-io के साथ कुछ लेना देना नहीं है। जब सादा फ़ैंटॉमजेएस समस्या हल हो जाती है, तो आप वेबड्राइवर-io –

उत्तर

7

शायद PhantomJS में ES6 समर्थन की कमी के साथ क्या करना है के साथ कोई समस्या नहीं है। जांच करने के लिए मैं अपनी स्क्रिप्ट के लिए (हमेशा आसान!) page.onError() कॉलबैक जोड़ा गया है और खोला कुछ उदाहरण साइट प्रतिक्रिया यह त्रुटि मिलना: लक्ष्य URL लोड करने से पहले

ReferenceError: Can't find variable: Symbol

पेज में प्रतीक एक कर सकते हैं inject इस core.js polyfill करने के लिए :

page.onInitialized = function() { 
    if(page.injectJs('core.js')){ 
     console.log("Polyfills loaded"); 
    }  
} 

लेकिन यह बाहरी साइटों को खोलने के लिए है। यदि परीक्षण की जा रही साइट आपके विकास के तहत है (जैसा कि लोकहोस्ट यूआरएल सुझाव देता है) तो आप शायद this answer में दिखाए गए अनुसार लेबल को कॉन्फ़िगर करने के साथ कर सकते हैं।

+0

पर विशिष्ट प्रश्न पूछ सकते हैं। page.onError() ने मेरे ऐप पर कोई त्रुटि नहीं दिखाई। लेकिन core.js इंजेक्ट करना नौकरी करना प्रतीत होता है। मैंने प्रेत-शिम्स और es5-shims इंजेक्ट करने की कोशिश की है, लेकिन उनमें से कोई भी मेरी समस्या का समाधान नहीं किया है। मैं आपके दूसरे लिंक का पालन करूंगा और अपनी बेबेल कॉन्फ़िगरेशन संशोधित करूँगा;) –

+0

यह सुनकर खुशी हुई कि यह अच्छी तरह से काम कर रहा है! – Vaviloff

2

आप पर फ़ैंटॉमजेएस 2.5.0 बीटा डाउनलोड कर सकते हैं।

इसमें QtWebKit इंजन अपडेट किया गया है जो ES6 को मूल रूप से समर्थन देता है।

+0

मेरे लिए काम नहीं किया। जब भी मैंने एक स्क्रीनशॉट पकड़ा तो यह अभी भी एक खाली पृष्ठ दिखाना जारी रखता है। – jagzviruz

संबंधित मुद्दे

 संबंधित मुद्दे