मेरे पास Selenium/Java में लिखा गया कोड है, लेकिन मैं इस कोड को पैरामीटर बनाना चाहता हूं और टैग नाम जोड़ना चाहता हूं जिसके लिए स्क्रीनशॉट लिया गया है:

@Then("^Take Screenshot$")
public void tearDown() {
    // take the screenshot at the end of every test
    String location = "D:/ubdd/screenshots/";
    DateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy h-m-s");
    Date date = new Date();
    File scrFile = 
    ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    // now save the screenshto to a file some place
    try {
    FileUtils.copyFile(scrFile, new File(location + 
    dateFormat.format(date)+".png"));
    System.out.println("Screenshot saved");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
0
Mohd Shah Nawaz 20 अक्टूबर 2017, 09:41
स्टैक ओवरफ्लो में आपका स्वागत है! कृपया प्रश्न पूछने के लिए मार्गदर्शिका पर एक नज़र डालें, विशेष रूप से न्यूनतम, पूर्ण और सत्यापन योग्य उदाहरण कैसे बनाएं
 – 
AesSedai101
20 अक्टूबर 2017, 09:49

2 जवाब

तर्क के रूप में Before hook and add the Scenario object का प्रयोग करें। ककड़ी वर्तमान में निष्पादित परिदृश्य के साथ इसे इंजेक्ट करेगी।

private Scenario sce;

    @Before
    public void beforeHook(Scenario scenario) {
         this.sce = scenario


        List<String> tags = sce.getSourceTagNames();
    }

टैग प्राप्त करने के लिए getSourceTagNames() को कॉल करने के लिए आप अपनी चरण परिभाषाओं में संग्रहीत परिदृश्य ऑब्जेक्ट तक पहुंच सकते हैं

1
Grasshopper 20 अक्टूबर 2017, 13:11

यदि आपके परीक्षण सिंगल-थ्रेडेड हैं तो आप परिदृश्य को निष्पादित करने के लिए पहले हुक का उपयोग कर सकते हैं जैसा कि @Grasshoper ने उल्लेख किया है और इसे वैश्विक चर में संग्रहीत किया है और फिर टैग नामों को पुनर्प्राप्त करने के लिए निष्पादित किए जा रहे चरण से परिदृश्य तक पहुंचें:

private Scenario scenario;

@Before
public void setUp(Scenario scenario) {
  this.scenario = scenario;
}

@Then("^Take Screenshot$")
public void tearDown() {
  this.scenario.getSourceTagNames();
  ...
}

बहु-थ्रेडेड निष्पादन के लिए मैं थ्रेड आईडी और परिदृश्य को निष्पादित करने के बीच एक लिंक बनाए रखने के लिए ConcurrentHashMap का उपयोग करूंगा। फिर आप थ्रेड आईडी का उपयोग करके चरण से निष्पादित किए जा रहे परिदृश्य को पुनः प्राप्त कर सकते हैं।

0
André Barbosa 21 अक्टूबर 2017, 00:48