2017-04-22 6 views
7

पर ड्राइवर सेवा शुरू नहीं कर सकता है मैंने कुछ सेलेनियम परीक्षण बनाए हैं जो स्थानीयहोस्ट पर बहुत बढ़िया काम करते हैं, लेकिन जब मैं एप्लिकेशन पर एप्लिकेशन को तैनात करता हूं, तो मुझे अपवाद मिल रहा है।ऐप्पलबर पर सेलेनियम इंटरनेट एक्सप्लोरर ड्रायवर: स्थानीयहोस्ट

इस कोड InternetExplorerDriver का एक नया उदाहरण बनाने पर अपवाद फेंकता है:

OpenQA.Selenium.WebDriverException: Cannot start the driver service on http://localhost:35187/ 
    at OpenQA.Selenium.DriverService.Start() 
    at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(String internetExplorerDriverServerDirectory, InternetExplorerOptions options) 
    ... 

आप कृपया सलाह सका क्या कारण हो सकता है और वहाँ किसी भी तरह से है:

var options = new InternetExplorerOptions(); 
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
Driver = new InternetExplorerDriver(DriverDirectory, options); 

यहाँ अपवाद नहीं है इसे हल करने के लिए?

+0

क्या आप IE ExplorerDriver का संस्करण जोड़ सकते हैं जिसका उपयोग आप कर रहे हैं और सेलेनियम कॉन्फ़िगरेशन भी कर सकते हैं। मुझे डर है कि यह पुराने सेलेनियम कॉन्फ़िगरेशन या सिस्टम कॉन्फ़िगरेशन समस्या के कारण हो सकता है-फ़ायरवॉल की तरह कुछ। – demouser123

उत्तर

1

बंदरगाह 333 InternetExplorerDriverService के लिए निर्दिष्ट प्रसिद्ध बंदरगाह-संख्या के दायरे में आता लेकर:

सबसे सिस्टम पर, एक प्रसिद्ध पोर्ट संख्या केवल एक प्रणाली द्वारा इस्तेमाल किया जा सकता (रूट) प्रक्रिया या एक विशेषाधिकार प्राप्त उपयोगकर्ता द्वारा संचालित कार्यक्रम द्वारा। चालक सेवा को एक स्पष्ट रूप से निर्दिष्ट न करें या उपलब्ध पोर्ट प्रदान न करके अपने पोर्ट का चयन करने दें।

चीजों की एक जोड़ी की जाँच करें:

  • ड्राइवर की उम्मीद स्थान में स्थित हैं
  • डबल क्लिक IEDriverServer.exe आप बंदरगाह संदेश पर एक सुनने को देखने के लिए क्या यह स्वचालित रूप से के रूप में ऊपर उठाता है दे देंगे उपलब्ध।
  • चेक Firwall लूपबैक
2

नील्स जवाब देने के लिए जोड़ा जा रहा है के लिए यातायात अवरुद्ध नहीं है, कभी कभी आप IE के exe फ़ाइल डाउनलोड करने और यह webdriver कॉल में पथ है निर्दिष्ट करना होगा। यदि आपके पास पहले से इंस्टॉल किए गए सेलेनियम ड्राइवर स्थापित हैं, तो यह स्वचालित रूप से ड्राइवरों के लिए खोज करता है। या आपको स्पष्ट रूप से डाउनलोड करना होगा और IE .exe फ़ाइल के पथ का उल्लेख करना होगा।

exe ​​फ़ाइल को डाउनलोड करने के लिए लिंक http://docs.seleniumhq.org/download/

1

जाएँ जब से मैं यानी ड्राइवर पथ मैं इस के साथ शुरू होता है के लिए कोड नहीं देख सकता। अपने समाधान में ड्राइवर्स नामक एक फ़ोल्डर जोड़ें। Ie.exe फ़ाइल को इसमें जोड़ें।

नीचे दिए गए ड्राइवर कोड में जोड़ें। मेरा अनुमान है कि जब आप स्थानीय होस्ट से ऐपहार्बर जा रहे हैं तो पथ बदल रहा है। मैंने इसे जेनकींस और सॉसलैब्स का उपयोग करके देखा है। GetBasePath का उपयोग करके इसे इंस्टॉल किया जाएगा जहां यह इंस्टॉल किया गया है।

मुझे लगता है कि नीचे सही है लेकिन परीक्षण नहीं किया है।

InternetExplorerOptions options = new InternetExplorerOptions(); 
    options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
    IWebDriver driver = new InternetExplorerDriver(Path.Combine(GetBasePath, @"Drivers\\"), options); 

driver.Navigate().GoToUrl("http://www.somewhere.com"); 


     public static string GetBasePath 
    { 
     get 
     { 
      var basePath = 
       System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)); 
      basePath = basePath.Substring(0, basePath.Length - 10); 
      return basePath; 
     } 
    } 
संबंधित मुद्दे