2012-09-24 16 views
10

पृष्ठभूमि:
मैं के एक मुट्ठी भर के माध्यम से चलाने के लिए जम्मू-यूनिट 4 के साथ संयोजन के रूप में सेलेनियम-server-2.25.0 उपयोग कर रहा हूँ मेरे जीडब्ल्यूटी ऐप के लिए यूआई परीक्षण परिदृश्य। मेरे आईडीई (नेटबीन्स 7.2) में, मैं अपने प्रोजेक्ट पर राइट-क्लिक कर सकता हूं, "टेस्ट" का चयन कर सकता हूं, और फ़ायरफ़ॉक्स विंडोज़ को पूरी तरह से (जैसा कि उन्हें करना चाहिए) सेलेनियम परीक्षण अपेक्षित के साथ चल रहा है। कमांड लाइन से, मैं mvn integration-test भी चला सकता हूं और इसे देख सकता हूं।कैसे ठीक से Xvfb के साथ काम करने सेलेनियम Maven प्लगइन कॉन्फ़िगर करने के लिए चलाने के लिए बिना सिर

लक्ष्य:
मैं एक Xvfb प्रदर्शन में बिना सिर को चलाने के लिए इन परीक्षणों पाने के लिए कोशिश कर रहा हूँ, लेकिन मैं मुसीबत यह हो रही Maven के साथ काम करने के लिए कर रहे हैं। मैं मैन्युअल रूप से export display=:2 (: 2 मेरा एक्सवीएफबी डिस्प्ले) चला सकता हूं, और उसके बाद परीक्षण अदृश्य प्रदर्शन में सफलतापूर्वक चलाए जा सकते हैं।

मुद्दा:
कुछ भी नहीं है सब पर बदलने के लिए जब मैं पूर्ण <plugin> मेरी pom.xml में here से प्रवेश शामिल और mvn integration-test चलाने लगता है। मैं अभी भी विंडोज़ को पॉप-अप कर रहा हूं और एक्सवीएफबी डिस्प्ले में नहीं चल रहा परीक्षण। अगर मैं इसे बाहर ले जाता हूं और फिर से चलाता हूं, तो वही परिणाम। जब मैं pre-integration-test से qwertyasdf के चरण बदल हालांकि, Maven गलत जीवन चक्र चरण के बारे में शिकायत करता है - तो मैं यह पूरी तरह से यह अनदेखी नहीं कर रहा है, और मैं उचित pom.xml संपादन कर रहा हूँ पता है।

धन्यवाद!

उत्तर

8

यह पता चलता है कि 'स्टार्ट-सर्वर' और 'स्टॉप-सर्वर' लक्ष्य सेलेनियमआरसी सर्वर शुरू करने/रोकने के लिए हैं। यह नहीं जो मैं चाहता था, क्योंकि मेरे सभी परीक्षण वेबड्राइवर एपीआई का उपयोग करते हैं।

जाहिर पोम में 'xvfb' लक्ष्य करता है निर्दिष्ट जीवन चक्र के चरण के दौरान एक Xvfb सत्र शुरू - मुझे लगता है मैं बस से पहले ही नहीं देखा। और इसकी कॉन्फ़िगरेशन में, आप निर्दिष्ट करते हैं कि एक प्रोप फ़ाइल विवरण कहां लिखना है जो Xvfb को प्रदर्शित करता है। जावा कोड में, इस फ़ाइल को पढ़ा जा सकता है और WebDriver बनाने के दौरान उपयोग किए गए फ़ायरफ़ॉक्सबाइन को मान दिया जाता है।

<properties> 
    <displayProps>target/selenium/display.properties</displayProps> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <systemPropertyVariables> 
        <display.props>${displayProps}</display.props> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>selenium-maven-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <id>xvfb</id> 
        <phase>test-compile</phase> 
        <goals> 
         <goal>xvfb</goal> 
        </goals> 
        <configuration> 
         <displayPropertiesFile>${displayProps}</displayPropertiesFile> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

यह पहली मुक्त प्रदर्शन पर Xvfb शुरू होता है (:: 20 या ऊपर) और मूल्य लिखते हैं करने के लिए रंगमंच की सामग्री फ़ाइल है कि मैंने पढ़ा है और में बाद में उपयोग के रूप में इस

प्रासंगिक pom.xml बिट्स हैं मेरा जावा कोड

String xvfbPropsFile = System.getProperty("display.props"); 

FirefoxBinary ffox = new FirefoxBinary(); 
ffox.setEnvironmentProperty("DISPLAY", /*read value from xvfbPropsFile*/); 
WebDriver driver = new FirefoxDriver(ffox); 

अब ड्राइवर उपयुक्त प्रदर्शन में फ़ायरफ़ॉक्स इंस्टेंस के नियंत्रण में होगा। देखा! `लक्ष्य/सेलेनियम

+0

मैं इस चलाने नहीं कर सकते, मैं अभी भी एक" कोई प्रदर्शन "त्रुटि यह मेरा दिन बचाया मिल :( –

+0

उत्कृष्ट है, धन्यवाद। –

+1

कृपया मुझे फ़ाइल की सामग्री को दिखाने/display.properties' –