2010-03-29 12 views
7

मैं आईई 6 के साथ सेलेनियम आरसी का उपयोग कर रहा हूं और XPath locators बहुत धीमी हैं। तो मैं यह देखने की कोशिश कर रहा हूं कि जावास्क्रिप्ट-एक्सपैथ वास्तव में चीजों को गति देता है या नहीं।जावास्क्रिप्ट के साथ सेलेनियम आरसी में xpath का उपयोग कैसे करें?

लेकिन देशी x- पथ पुस्तकालयों का उपयोग करने के तरीके पर पर्याप्त/स्पष्ट दस्तावेज़ीकरण नहीं मिला।

protected void startSelenium (String testServer, String appName, String testInBrowser){ 
    selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/"); 
    echo("selenium instance created:"+selenium.getClass()); 
    selenium.start(); 
    echo("selenium instance started..." + testServer + "/" + appName +"/"); 

    selenium.runScript("lib/javascript-xpath-latest-cmp.js"); 
    selenium.useXpathLibrary("javascript-xpath"); 
    selenium.allowNativeXpath("true"); 
} 

यह XPath लोकेटर की गति में सुधार में परिणाम है, लेकिन सुधार संगत नहीं हैं:

मैं निम्नलिखित कर रहा हूं। कुछ रनों पर लोकेटर के लिए लिया गया समय कम हो गया है; जबकि कभी-कभी इसकी यादृच्छिक रूप से उच्च होती है।

क्या मुझे यहां कोई कॉन्फ़िगरेशन चरण याद आ रहा है? अच्छा होगा अगर जिसने इसके साथ सफलता प्राप्त की है, उनके विचार और दृष्टिकोण साझा कर सकते हैं।

धन्यवाद, निर्मल

समाधान:

protected void startSelenium (String testServer, String appName, String testInBrowser){ 
    selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/"); 
    echo("selenium instance created:"+selenium.getClass()); 
    selenium.start(); 
    echo("selenium instance started..." + testServer + "/" + appName +"/"); 

    selenium.useXpathLibrary("javascript-xpath"); 
} 

उत्तर

4

मैंने इसे स्वयं लागू किया और मुझे केवल selenium.useXpathLibrary ("जावास्क्रिप्ट-xpath") करना पड़ा। मेरे परीक्षणों में, जावास्क्रिप्ट xpath आईई 8 पर लगभग 7x तेज था। वास्तव में किसी और चीज पर परीक्षण नहीं किया है, लेकिन हम केवल आईई के लिए इसका इस्तेमाल करते हैं।

+0

हाय दान, यदि हम स्पष्ट रूप से स्क्रिप्ट नहीं जोड़ते हैं; इंजन कहां से आता है ?? सेलेनियम पहले से ही इस जेएस शामिल है ?? मैं इस तरह के सबूत खोजने में सक्षम नहीं था। –

+0

यदि आप सेलेनियम स्रोत कोड देखते हैं, तो आप देखेंगे कि जावास्क्रिप्ट-xpath-0.1.11.js सामान्य \ src \ js \ core \ xpath में शामिल है, इसलिए मुझे लगता है कि यह उस से खींच रहा है। कुछ परीक्षणों के परिणामस्वरूप मेरे परीक्षण 7x तेज हो रहे हैं। =) –

0

मैं इस कभी नहीं किया है, लेकिन लगता है कि आप की तरह

//Add the library to the page since runScript just does an eval on the JS 
selenium.runScript("document.body.append(document.createElement('script')).src = 'path/to/lib');"); 
selenium.useXpathLibrary("javascript-xpath"); 
selenium.allowNativeXpath("true"); 

आप जोड़ने की आवश्यकता होगी कुछ करने के लिए आवश्यकता हो सकती है कि है पृष्ठ पर लाइब्रेरी और फिर इसे लोड करें।

हालांकि, मैं XPath चयनकर्ताओं के बजाय सीएसएस चयनकर्ताओं का उपयोग करने की सलाह दूंगा क्योंकि वे सेलेनियम में बहुत तेज हैं। आप विभिन्न लोकेटर रणनीतियों का उपयोग कैसे कर सकते हैं here। मैंने देखा है कि मूल XPath के रूप में परीक्षण कम से कम दोगुनी हो जाते हैं।

+0

मैं वर्तमान में सीएसएस चयनकर्ताओं का उपयोग कर रहा हूं ... लेकिन वे थोड़ा अधिक जटिल हैं और आईई के साथ उनका उपयोग करते समय और समस्याएं हैं। जावास्क्रिप्ट-एक्सपैथ द्वारा प्रस्तावित गति सुधार की खोज में यह देखने के लिए कि वे सीएसएस चयनकर्ताओं की तुलना में तुलना करते हैं। –

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