2010-06-28 22 views
5

विंडोज 2008, सी #, फ़ायरफ़ॉक्स 3.5.1 का उपयोग करना, सेलेनियम आर सी (v1.0.1)सेलेनियम फ़ायरफ़ॉक्स खोलें समय समाप्ति

जब यह काम करता है, इस कोड को बहुत जल्दी कार्यान्वित और .5 सेकंड के भीतर पृष्ठ लोड।

हालांकि, सत्र हमेशा 3 - 5 पुनरावृत्तियों के बाद विफल रहता है। ओपन कमांड एक विंडो को उत्पन्न करने का कारण बनता है, लेकिन कोई पेज लोड नहीं किया जाएगा। आखिरकार एक टाइमआउट अपवाद वापस कर दिया जाता है। पृष्ठ वास्तव में समय समाप्त नहीं हुआ है। इसके बजाए, ऐसा लगता है कि एक यूआरएल के लिए अनुरोध ब्राउज़र विंडो तक कभी नहीं पहुंचा है।

class Program 
    { 
     static void Main(string[] args) 
     { 
      for (int i = 0; i < 10; i++) 
      { 
       var s = new DefaultSelenium("localhost", 4444, "firefox", "http://my.server"); 
       s.Start(); 
       s.SetSpeed("300"); 
       s.Open("/"); 
       s.WaitForPageToLoad("30000"); 
       s.Type("//input[contains(@id, '_username')]", "my.test"); 
       s.Type("//input[contains(@id, '_password')]", "password"); 
       s.Stop(); 

      } 
     } 
    } 

उत्तर

2

मैं एक समान सेट अप है (फ़ायरफ़ॉक्स 3.6.15, सेलेनियम आर सी 1.0.1, लेकिन WinXP पर और अजगर लाइब्रेरी का उपयोग करके) और मैं साइटों की एक जोड़ी के साथ काम कर रहा हूँ - एक साइट स्वाभाविक रूप से की संभावना है सामान्य उपयोग में टाइमआउट (उदाहरण के लिए एक मानव उपयोगकर्ता द्वारा) जबकि अन्य आम तौर पर नहीं होते हैं। जो लोग थोड़ा धीमा नहीं दिखते हैं, लेकिन एक व्यक्ति जो कि किसी व्यक्ति द्वारा आरसी के माध्यम से चलाया जाता है, समय-समय पर प्रवण होता है - यह हमेशा समय-समय पर नहीं होता है लेकिन घटनाएं अधिक आम होती हैं।

इसके लिए मेरा सीमित मानसिक मॉडल यह है कि किसी भी तरह से अतिरिक्त कदम आरसी कर रहा है (ब्राउजर के साथ संवाद कर रहा है, यह देखकर कि लौटाए गए पृष्ठों आदि में क्या देखता है) किसी भी तरह पेज लोड के प्रत्येक चरण में थोड़ा सा जोड़ रहे हैं और फिर किसी बिंदु पर वे इसे किनारे पर धक्का देंगे। जाहिर है यह अत्यधिक सरलीकृत है, मेरे पास अभी ठीक से जांच करने का समय नहीं है।

इसके अलावा, मुझे लगता है कि समस्या समय के साथ और भी खराब हो जाती है, जो ओपी ने जो देखा है उसके साथ थोड़ा सा फिट बैठता है (यानी पहली बार काम करना लेकिन 3-5 प्रयासों के बाद नहीं)। प्रायः एक रिबूट मुद्दों को ठीक करने लगता है, लेकिन उचित जांच के बिना मैं यह नहीं बता सकता कि यह क्यों मदद करता है, शायद यह किसी भी तरह से स्मृति को मुक्त कर रहा है (मशीन अन्य चीजों के लिए उपयोग की जाती है), हमारी कंपनी के प्रॉक्सी के किसी एक को आवंटित किया जा रहा है या कुछ और मैंने नहीं सोचा है।

तो ... यहां एक पूर्ण उत्तर नहीं है (एक टिप्पणी अधिक उपयुक्त होगी, लेकिन मेरा लॉगिन अभी तक सक्षम नहीं है), लेकिन कम से कम यह मजबूती देता है कि आप एकमात्र नहीं हैं। आवधिक पुनर्स्थापना करने के लिए एक परेशान चीज है, लेकिन किसी भी स्मार्ट विश्लेषण और उत्तरों की अनुपस्थिति में, शायद वे एक शॉट के लायक होंगे?

+0

हमने एक नया सेलेनियम उदाहरण का उपयोग किया और इसलिए प्रत्येक परीक्षण के लिए ब्राउज़र उदाहरण ... अच्छा नहीं। – Blundell

2

मुझे एक ही समस्या का सामना करना पड़ रहा था। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट सेलेनियम के खुले तरीके में 30000ms का टाइमआउट है, इसलिए यह आपके पृष्ठ को लोड करने के लिए 30 के लिए प्रतीक्षा करता है। आप इस छोटे समाधान का प्रयास कर सकते हैं।

//selenium is DefaultSelenium instance as private member of the class 

      boolean serverStartTry = false; 
     int tryCount =1; 

     while((!serverStartTry) && tryCount <= Constants.maxServerTries){ 
      try{ 
       this.selenium.open(ReadConFile.readcoFile("pageName")); 
       System.out.println("Server started in try no: "+tryCount); 
       serverStartTry =true; 
      }catch (SeleniumException e) { 
       System.out.println("Server start try no: "+tryCount); 
       System.out.println("Server Start Try: "+ serverStartTry); 
       serverStartTry = false; 
       tryCount++; 
      } 
     } 
     if(!serverStartTry){ 
      System.out.println("Server Not started, no. of attempts made: "+tryCount); 
      System.exit(0); 
     } 
1

मैं का उपयोग कर हल किया है:

selenium.setTimeout("60000"); 

खुला अनुदेश से पहले।

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