2009-04-03 8 views
16

डिज़ाइन द्वारा, सेलेनियम प्रत्येक बार एक नया परीक्षण चलाए जाने पर आपकी फ़ायरफ़ॉक्स प्रोफ़ाइल की एक नई प्रति बनाता है। मुझे लगता है कि यह प्रतिलिपि समय काफी बाधा है, खासकर जब 100 के परीक्षण चलाते हैं। (प्रोफाइल को फिर से कॉपी करने के लिए 5-15 सेकंड)।क्या सेलेनियम सर्वर लोड समय को गति देने का कोई तरीका है?

क्या किसी को इसके लिए किसी भी ओवरराइड व्यवहार के बारे में पता है? मैं अपने सेलेनियम सर्वर को उसी फ़ायरफ़ॉक्स प्रोफाइल का पुन: उपयोग करने के लिए पसंद करूंगा। मुझे पता है कि यह "अपने परीक्षण फिक्स्चर को स्पष्ट रूप से स्थापित करें" दर्शन का उल्लंघन करता है, लेकिन यह एक शॉर्टकट है जिसे मैं लेने के लिए तैयार हूं, क्योंकि मेरे परीक्षण भौतिक रूप से भविष्य में परीक्षणों को खतरे में डालने के लिए पर्याप्त रूप से मेरी फ़ायरफ़ॉक्स प्रोफ़ाइल को परिवर्तित नहीं करते हैं।

उत्तर

8

मैं मानता हूं कि यह एक समस्या है। प्रत्येक बार फ़ायरफ़ॉक्स प्रक्रिया की एक नई प्रतिलिपि रखना अच्छा लगता है, लेकिन फ़ायरफ़ॉक्स प्रोफ़ाइल को पुन: उत्पन्न करके स्टार्टअप समय को दोगुना करने के लिए थोड़ा अधिक है। यदि आप http://jira.openqa.org पर एक बग रिपोर्ट खोलते हैं और मुझे [email protected] पर ईमेल करते हैं तो मुझे यह सुनिश्चित करने में खुशी होगी कि हमें एक समाधान मिल जाएगा।

पीएस: मैंने इस समस्या को अपने लिए एक-एक के रूप में हल कर लिया है। हम एक ही फ़ायरफ़ॉक्स प्रोफाइल का उपयोग करते हैं और कैश और कुकीज़ डीबी से बाहर निकलते हैं। लेकिन मुझे वास्तव में पैच करना चाहिए जो सेलेनियम स्रोत में वापस आ जाए।

+0

क्या आप समझा सकते हैं कि आपने इसे कैसे हल किया? मैं परीक्षण के बीच एक ब्राउज़र ऑब्जेक्ट का पुन: उपयोग करने में सक्षम होना चाहता हूं। – djangofan

+3

कृपया समाधान भी पसंद करेंगे – DevDave

6

यह बस (कोड मान लिया गया NUnit।) सेलेनियम उदाहरण के अपने परीक्षण की स्थापना के बाहर नीचे और स्थिरता सेटअप में कोड का स्थान बदलना और एक वैश्विक रखने की बात है

[TestFixtureSetUp()] 
public void FixtureSetup() 
{ 
    selenium = New DefaultSelenium("localhost", 4444, "*firefox", "http://localhost/"); 
    selenium.Start(); 
    selenium.SetTimeout("30000"); 
    selenium.Open("/"); 
} 

आपका परीक्षण सेटअप तो दिखना चाहिए इस तरह कुछ:

[SetUp()] 
public void SetUpTest() 
{ 
    selenium.Open("default.aspx"); 
    selenium.WaitForPageToLoad("30000"); 
} 
+0

बस सोच रहा है कि आपके पास OpenForPageToLoad क्यों है जब यह ओपन() विधि में अंतर्निहित है? यह हो सकता है कि यह 200 9 की पोस्ट है :-) – Blundell

0

MSTest का उपयोग करना, मैं करने के लिए केवल बल्कि खोलने और प्रत्येक परीक्षा के लिए एक नया विंडो बंद करके ClassInitialize (और Cleanup) में WebDriver initialising द्वारा की तुलना में सभी परीक्षणों के लिए एक एकल Firefox विंडो खोलें, ड्राइवर प्राप्त करने के लिए, बजाय कर रहा था TestInitialize:

static string path; 
     static IWebDriver driver; 
     static string baseURL; 

     [ClassInitialize] 
     public static void ClassInitialize(TestContext context) { 
      DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory()); 
      path = Path.Combine(di.Parent.Parent.Parent.FullName, "Tests\\bin\\debug\\"); 
      driver = new FirefoxDriver(); 
      baseURL = "http://localhost:5555/"; 
     } 

     [ClassCleanup] 
     public static void ClassCleanup() { 
      driver.Quit(); 
     } 
0

हालांकि यह अब एक पुराना सवाल है !! सेलेनियम सर्वर या आरसी पुराना है लेकिन एक ही समस्या सेलेनियम वेबड्राइवर के साथ बनी हुई है .. वेबड्राइवर के माध्यम से फ़ायरफ़ॉक्स लॉन्च करने में लगभग 30 सेकंड लगते हैं।

लेकिन यहां बताए गए कुछ लोगों को इस के आसपास मिल गया "(नियंत्रण कक्ष \ नेटवर्क में स्थित है और इंटरनेट \ नेटवर्क कनेक्शन)

यह बिंदु पर अटक गया था अप्रयुक्त नेटवर्क एडाप्टर अक्षम करने के बाद:

ExtensionConnection connection = connectTo(exe.binary, profileToUse, "localhost"); 

https://groups.google.com/forum/#!topic/selenium-users/a2fNfF-mD_E

हालांकि यह मेरे लिए काम नहीं किया था, लेकिन एक यकीन है कि के लिए यह प्रयास कर सकते हैं !!

एक और wayout मील GHT हो: समय प्रोफ़ाइल पर लोड करने के लिए कम करने के लिए

FirefoxProfile profile = new FirefoxProfile(); 
FirefoxBinary binary = new FirefoxBinary(@"path\to\firefox.exe"); 
FirefoxDriver driver = new FirefoxDriver(binary,profile); 
1

एक छोटा सा रास्ता फ़ायरफ़ॉक्स प्रोफ़ाइल से बाहर बड़ी फ़ाइलों को निकालने के लिए है। ऐसा करने के लिए, firefox.exe -p कमांड चलाकर अपनी प्रोफ़ाइल सेट अप करें। एक बार प्रोफाइल बनने के बाद, विकल्पों में जाएं और वेब परीक्षणों के लिए आवश्यक कैशिंग और अन्य फ़्लफ बंद करें। फिर अपनी प्रोफ़ाइल को एक नए स्थान पर कॉपी करें और एसक्यूएल फाइलों को हटा दें जिनकी आवश्यकता नहीं है। (अन्यथा जब आप इसे फिर से खोलते हैं, तो आप हटाए गए फ़ाइलों को पुनर्स्थापित करते हैं जो प्रोफ़ाइल को बहुत छोटा रखते हैं)। जब आप सेलेनियम परीक्षण शुरू करते हैं, तो अपनी प्रोफ़ाइल को अपने नए स्थान पर संदर्भित करें।इससे पहले, मैं प्रत्येक परीक्षण स्टार्ट-अप पर 50 एमबी प्रोफाइल पर प्रतिलिपि बना रहा था, और अब यह 3-4 एमबी प्रोफाइल पर प्रतिलिपि बना रहा है, और स्टार्टअप समय लगभग तुरंत है।

फिर से, यह एक ही प्रोफ़ाइल का फिर से उपयोग करने का एक तरीका नहीं है, लेकिन यह प्रत्येक प्रोफ़ाइल के आपके प्रतिलिपि को कम करेगा।

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