2012-11-23 18 views
5

के साथ साझा ड्रायवर में गोलीबारी नहीं की गई टिप्पणियां यह मुझे पागल कर रही है। मैं ककड़ी-जेवीएम का उपयोग करके एक परीक्षण ढांचा चला रहा हूं और स्क्रीनशॉट लेने के लिए इसे प्राप्त करने की कोशिश कर रहा हूं। मैंने जावा-वेबबिट-वेबसाइकिल-सेलेनियम उदाहरण को देखा है जो साझा किया गया है और साझाड्राइवर मॉड्यूल का उपयोग करके अपने वेबड्राइवर को कॉल करने की एक ही विधि लागू की है। किसी कारण से, मेरे @ पहले और @ अक्षम तरीकों को नहीं कहा जा रहा है (मैंने वहां प्रिंट विवरण लगाए हैं)। क्या कोई किसी तरह की रोशनी दिखा सकता है?ककड़ी-जेवीएम

SharedDriver:

package com.connectors; 

import cucumber.api.java.After; 
import cucumber.api.java.Before; 
import cucumber.api.Scenario; 
import org.openqa.selenium.Dimension; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebDriverException; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.firefox.FirefoxProfile; 
import org.openqa.selenium.support.events.EventFiringWebDriver; 

import java.util.concurrent.TimeUnit; 


public class SharedDriver extends EventFiringWebDriver { 




    private static final WebDriver REAL_DRIVER = new FirefoxDriver(); 

     private static final Thread CLOSE_THREAD = new Thread() { 
      @Override 
      public void run() { 
       REAL_DRIVER.close(); 
      } 
     }; 

     static { 
      Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); 
     } 

     public SharedDriver() { 
      super(REAL_DRIVER); 
      REAL_DRIVER.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
      REAL_DRIVER.manage().window().setSize(new Dimension(1200,800)); 
      System.err.println("DRIVER"); 
     } 

     @Override 
     public void close() { 
      if(Thread.currentThread() != CLOSE_THREAD) { 
       throw new UnsupportedOperationException("You shouldn't close this WebDriver. It's shared and will close when the JVM exits."); 
      } 
      super.close(); 
     } 

     @Before() 
     public void deleteAllCookies() { 
      manage().deleteAllCookies(); 
      System.err.println("BEFORE"); 
     } 

     @After 
     public void embedScreenshot(Scenario scenario) { 
      System.err.println("AFTER"); 
      try { 
       byte[] screenshot = getScreenshotAs(OutputType.BYTES); 
       scenario.embed(screenshot, "image/png"); 
      } catch (WebDriverException somePlatformsDontSupportScreenshots) { 
       System.err.println(somePlatformsDontSupportScreenshots.getMessage()); 
      } 
     } 


    } 

चरण फ़ाइल:

package com.tests; 

import com.connectors.BrowserDriverHelper; 
import com.connectors.SharedDriver; 
import com.connectors.FunctionLibrary; 

import cucumber.api.Scenario; 
import cucumber.api.java.After; 
import cucumber.api.java.Before; 
import cucumber.api.java.en.And; 
import cucumber.api.java.en.Given; 
import cucumber.api.java.en.Then; 
import cucumber.api.java.en.When; 
import cucumber.runtime.PendingException; 
import org.openqa.selenium.*; 


import java.io.File; 
import java.util.List; 
import java.util.concurrent.TimeUnit; 
import static org.junit.Assert.*; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.support.events.EventFiringWebDriver; 

/** 
* Created with IntelliJ IDEA. 
* User: stuartalexander 
* Date: 23/11/12 
* Time: 15:18 
* To change this template use File | Settings | File Templates. 
*/ 
public class addComponentsST { 
    String reportName; 
    String baseUrl = BrowserDriverHelper.getBaseUrl(); 
    private final WebDriver driver; 

    public addComponentsST(SharedDriver driver){ 
     this.driver = driver; 
     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
    } 

    @Given("^I have navigated to the \"([^\"]*)\" of a \"([^\"]*)\"$") 
    public void I_have_navigated_to_the_of_a(String arg1, String arg2) throws Throwable { 
     // Express the Regexp above with the code you wish you had 
     assertEquals(1,2); 
     throw new PendingException(); 
    } 

CukeRunner:

package com.tests; 

import org.junit.runner.RunWith; 

import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(tags = {"@wip"}, format = { "pretty","html:target/cucumber","json:c:/program files (x86)/jenkins/jobs/cucumber tests/workspace/target/cucumber.json" }, features = "src/resources/com/features") 
public class RunCukesIT { 
} 

उत्तर

5

SharedDriver एक ही पैकेज में RunCukesIT के रूप में रखो, अर्थात com.tests

जुनीट धावक का उपयोग करते समय, गोंद यूनिट टेस्ट पैकेज (यहां com.tests) बन जाता है, और यह वह जगह है जहां ककड़ी-जेवीएम एनोटेशन के लिए कक्षाओं को "स्कैन" करेगा।

+1

बहुत बहुत धन्यवाद! मैं उम्र के लिए इस मुद्दे के खिलाफ अपने सिर को झुका रहा हूं :) – theawesome

+0

मैं दुर्भाग्यपूर्ण था कि इसे कठिन तरीके से समझना और बाद में आपके उत्तर में ठोकर खाएं। +1 हालांकि। – Corey

+0

हाय दोस्तों। मुझे इसके बारे में एक प्रश्न पूछने दो। यदि मेरे पास साइट पर प्रत्येक पृष्ठ के लिए एकाधिक चरण फ़ाइलें और एकाधिक पृष्ठ वस्तु है तो मुझे वेबड्राइवर को तुरंत चालू करने की आवश्यकता है। अभी, प्रत्येक पृष्ठ ऑब्जेक्ट क्लास बेसपेज.क्लास को बढ़ाती है जिसमें ढांचे के लिए सभी तत्कालता शामिल है। लेकिन साझा चालक के मामले में मैं उलझन में हूं मैं इसे कैसे संभाल सकता हूं! धन्यवाद! – brobee