11

मेरे पास एक एज़ूर वेब ऐप है जिसे मैं एक वेबसाइट पर स्क्रीन स्क्रैप करने के लिए उपयोग करना चाहता हूं, जब मैं नियंत्रक पर एक क्रिया को कॉल करता हूं।Azure वेब ऐप पर सेलेनियम चलाना

var driver = new PhantomJSDriver(); 
driver.Url = "http://url.com"; 
driver.Navigate(); 
var source = driver.PageSource; 
var pathElement = driver.FindElementByXPath("//table[@class='someclassname']"); 

string innerHtml = ""; 
IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
if (js != null) 
{ 
    innerHtml = (string)js.ExecuteScript("return arguments[0].innerHTML;", pathElement); 
} 
return innerHtml; 

यह स्थानीय स्तर पर ठीक काम करता है, फिर भी मैं अपने Azure वेब एप्लिकेशन को अपलोड करते हैं, मैं इस त्रुटि मिलती है

http://localhost:51169/

पर चालक सेवा मैं इस किया है मान प्रारंभ नहीं कर सकता फ़ायरवॉल के साथ करें क्योंकि पहली बार ऐप चलाने पर मुझे फ़ायरवॉल सेटिंग्स में फ़ैंटॉमजेएस को स्वीकृति देने की आवश्यकता है। मेरा सवाल यह है कि मैं Azure में तैनात काम करने के लिए यह कैसे प्राप्त करूं? क्या यह भी संभव है, या क्या मुझे इसे कुछ यूनिट टेस्ट के रूप में कॉन्फ़िगर करने और इसे विजुअल स्टूडियो के भीतर से चलाने की आवश्यकता है?

+2

क्या आपको कभी भी आपकी समस्या का समाधान मिला? क्योंकि मैं एक ही नाव में हूं। – Martin

+0

क्या आप कभी भी यह काम करने में सक्षम थे? आपके बारे में @ मार्टिन – paqogomez

उत्तर

6

फ़ैंटॉमजेएस आज सैंडबॉक्स में काम नहीं करता है जो Azure वेब Apps के अंतर्गत चल रहा है। wiki उन चीज़ों की सूची के लिए देखें जिन्हें वर्तमान में काम नहीं करने के लिए जाना जाता है, साथ ही सैंडबॉक्स के बारे में अन्य जानकारी भी उपलब्ध है।

+0

मैं देखता हूं, क्या आप अज़ूर में चोमड्रिवर काम की तरह कुछ जानते हैं? –

+1

क्षमा करें, मुझे नहीं पता, लेकिन यह कोशिश करने लायक हो सकता है। दुर्भाग्यवश, जीडीआई प्रतिबंध इस जगह में कई परिदृश्यों को अवरुद्ध करते हैं। –

+0

अच्छी तरह से जानकारी के लिए धन्यवाद, मैं इसे आज़माउंगा। –

0

मैं यहां इस स्निपेट को पोस्ट करूंगा जो Azure पर काम करता है। हालांकि यह उत्पादन में उपयोग करने योग्य नहीं है क्योंकि मुझे यादृच्छिक कनेक्शन त्रुटियां मिल रही हैं जैसे कि:

दूरस्थ सर्वर आंतरिक संदेश से कनेक्ट करने में असमर्थ: दूरस्थ सर्वर आंतरिक संदेश से कनेक्ट करने में असमर्थ: एक्सेस करने का प्रयास किया गया था इसकी एक्सेस अनुमतियों से प्रतिबंधित एक सॉकेट

सटीक कोड एक कंसोल या विंडोज़ एप्लिकेशन वातावरण पर अच्छी तरह से काम करता है।

PhantomJSDriver driver = null; 
     PhantomJSDriverService service; 

     ServicePointManager.ServerCertificateValidationCallback = new 
      RemoteCertificateValidationCallback 
      (
       delegate { return true; } 
      ); 

     int retry = 0; 

     while (driver == null && retry < 3) 
     { 
      try 
      { 
       service = PhantomJSDriverService.CreateDefaultService(); 
       var uri = service.ServiceUrl; 
       var port = service.Port; 
       service.LocalToRemoteUrlAccess = true; 
       var ghostDriverPath = service.GhostDriverPath; 
       service.HideCommandPromptWindow = true; 
       service.Start(); 

       var options = new PhantomJSOptions(); 
       driver = new PhantomJSDriver(service, options); 
      } 
      catch (Exception ex) 
      { 
       if (driver != null) 
       { 
        driver.Close(); 
        driver.Quit(); 
        driver = null; 
       } 
       Thread.Sleep(retry * 1500); 

       ServiceAudit.Default.TraceDebug($"Starting web driver failed on {retry} try"); 
      } 
      retry++; 
     } 

     if (driver == null) 
     { 
      ServiceAudit.Default.TraceError($"Web driver could not be started"); 
     } 

     return driver; 
संबंधित मुद्दे