2012-01-22 15 views
6

देता है मैं एक सेवा बनाने के लिए एएसपी.नेट वेबसाइट में सेलेनियम 2 (वेबड्राइवर) का उपयोग कर रहा हूं, जहां उपयोगकर्ता अपना यूआरएल दर्ज कर सकते हैं और पेज के स्क्रीनशॉट प्राप्त कर सकते हैं विभिन्न ब्राउज़रों के साथ।सेलेनियम 2 (वेबड्राइवर): स्क्रीनशॉट लेना एक ब्लैक इमेज

मेरा पृष्ठ Windows Server 2008 R2 पर होस्टेट है।

FirefoxDriver के साथ स्क्रीनशॉट लेना सही काम करता है। लेकिन जब मैं InternetExplorerDriver का उपयोग कर रहा हूं, तो मुझे बस एक खाली ब्लैक फ़ाइल मिलती है।

ऐप प्रशासक के रूप में चल रहा है - इसलिए अनुमति समस्याएं नहीं होनी चाहिए।

मेरे कोड:

// Opening the Browser 
var ieCapabilities = DesiredCapabilities.InternetExplorer(); 
ieCapabilities.SetCapability(InternetExplorerDriver.IntroduceInstabilityByIgnoringProtectedModeSettings, true); 
var browserIe = new InternetExplorerDriver(ieCapabilities); 
browserIe.Navigate().GoToUrl("http://www.google.com"); 
// Screenshot 
var dir = Server.MapPath("/screenshots/"); 
browserIe.GetScreenshot().SaveAsFile(dir + "Filename.png", ImageFormat.Png); 
browserIe.Close(); 

कोई भी विचार क्यों मेरी फाइल काला है? धन्यवाद!

उत्तर

5

शायद आपके कोड के साथ कुछ भी गलत नहीं है। हालांकि, मैं जावा का उपयोग कर रहा हूं, इसलिए मैं निश्चित रूप से नहीं बता सकता।

आईई के साथ मेरा एक ही मुद्दा था जबकि एफएफ और क्रोम ठीक काम करते थे।

यह post बताता है कि एक दूरस्थ डेस्कटॉप कनेक्शन के माध्यम से सेलेनियम सर्वर शुरू करने से समस्याएं पैदा हो सकती हैं।

कुछ अन्य पोस्टों से पता चलता है कि स्क्रीन सेवर के पास कुछ करने के लिए कुछ हो सकता है।

मैंने दूरस्थ डेस्कटॉप कनेक्शन को खोलने की कोशिश की और यह ब्लैक स्क्रीनशॉट समस्या हल हो गई। वीएनसी के माध्यम से भी लॉग इन करना काम करता है, मुझे इस सिद्धांत के लिए प्रेरित करता है कि विंडोज़ रिमोट डेस्कटॉप कनेक्शन को समाप्त करने के बाद स्क्रीन को लॉक करता है जबकि इसे VNC का उपयोग करते हुए अनलॉक कर दिया जाता है।

यह post सुझाव देता है कि स्क्रीन लॉक होने पर स्क्रीनशॉट को अक्षम करना एक विंडोज सुरक्षा सुविधा है।

0
InternetExplorerDriver mydriver = new InternetExplorerDriver(); 
    mydriver.Navigate().GoToUrl("http://www.google.com/"); 
    Screenshot myScrennShot = ((ITakesScreenshot)iedriver).GetScreenshot(); 
    myScrennShot.SaveAsFile(@"C:\Path\123.png", ImageFormat.Png); 
    //or 
    byte[] data = myScrennShot.AsByteArray; 

यह मेरे लिए काम करता है, शायद इसके लिए काम करता है आप भी :-) यह मेरा सुझाव है कि आप क्योंकि आप मामले को इस मुद्दे शायद के साथ जुड़ा हुआ में विभिन्न सेवा (WindowsService) के लिए इस कोड को अलग करने के काम नहीं करता है आवेदन पूल प्रतिबंध। वैसे भी, कृपया मुझे बताएं कि यह कैसा चल रहा है।