मैं कुछ सेलेनियम कोड विकसित कर रहा हूं और अपाचे पीओआई का उपयोग कर एक्सेल शीट से इनपुट प्राप्त करने का प्रयास कर रहा था। अब तक मैं इनपुट प्राप्त करने में कामयाब रहा हूं लेकिन मैं इसे कक्षा से कक्षा में स्थानांतरित करने में असमर्थ हूं। कृपया नीचे दिए गए कोड को देखें:

कॉल करने के लिए कार्य:

package Excel;

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Read {

    XSSFSheet Names;
    public void read() throws Exception{

        File src = new File("C:\\Users\\dindo\\Documents\\tests\\d2c-lv-int-01_DATA.xlsx");

        FileInputStream fis = new FileInputStream(src);

        XSSFWorkbook wb = new XSSFWorkbook(fis);

        Names = wb.getSheetAt(0);

    }

    public void getcell(int row, int col){
        String stringresult = Names.getRow(row).getCell(col).getStringCellValue();
        String intresult = Names.getRow(row).getCell(col).getStringCellValue();
    }

कार्यों को कॉल करने का प्रयास कर रहा है:

package Pages;

import Excel.Read;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

public class DetailsPage {
    Read cel = new Read();
    cel.getcell(2,4)

    @FindBy(how = How.XPATH, using = "/*xpath*/")
    public WebElement coveramountelement;

    public String coveramount = cel.intresult;

    public void EnterDetails() {
        coveramountelement.sendKeys(coveramount);
    }
}

ERRORS

सभी त्रुटियां जो पंक्ति 10 के लिए हैं cel.getcell(2,4); के लिए हैं

0
user10144659 27 जुलाई 2018, 16:41
1
हो सकता है कि आप सीखना चाहें कि return मान कैसे लें... आप cel.getcell(2,4) को एक विधि के बाहर कॉल कर रहे हैं
 – 
OneCricketeer
27 जुलाई 2018, 16:46
आपका मुख्य तरीका कहां है? और String coveramount = cel को कंपाइल नहीं करना चाहिए। क्या यह आपकी समस्या है?
 – 
OneCricketeer
27 जुलाई 2018, 16:47
अभी मुझे Cannot resolve symbol मिल रहा है
 – 
user10144659
27 जुलाई 2018, 16:51
कृपया दी गई त्रुटियों के लिए उपरोक्त लिंक देखें।
 – 
user10144659
27 जुलाई 2018, 16:56
जैसे मैंने कहा, cel.getcell(2,4) एक विधि के बाहर है, अंत में एक अर्धविराम गायब है, और वास्तव में यहां आपके कोड में कुछ भी उपयोगी नहीं है... यदि आप इसे सही ढंग से अंदर रखते हैं तो आप उस विधि को कॉल करने में सक्षम होंगे एक विधि जहां आपको इसका उपयोग करने की आवश्यकता है
 – 
OneCricketeer
27 जुलाई 2018, 17:01

2 जवाब

मैं आपके कोड को इस तरह से पुनर्गठित करने का सुझाव दूंगा:

फ़ंक्शंस का पुन: उपयोग किया जाना है - इसलिए उनमें विशिष्ट चर को हार्ड-कोडिंग करना एक अच्छा विचार नहीं है। और आप किसी भी राज्य को संग्रहित नहीं कर रहे हैं, इसलिए केवल अपनी इच्छित वस्तुओं को वापस कर दें

public class Read {

    public static XSSFSheet getSheet(String file, int sheetIndex) throws Exception{
        File src = new File(f);
        FileInputStream fis = new FileInputStream(src);
        XSSFWorkbook wb = new XSSFWorkbook(fis);
        return wb.getSheetAt(sheetIndex);
    }

    public static Cell getCell(XSSFSheet s, int row, int col) {
       return s.getRow(row).getCell(col);
    }

अब, अपने विशिष्ट कार्यों को करने के लिए उन सामान्य कार्यों का उपयोग करें

public class DetailsPage {
    private XSSFSheet names;

    public DetailsPage() {
        try {
           names = Read.getSheet("C:\\Users\\dindo\\Documents\\tests\\d2c-lv-int-01_DATA.xlsx", 0);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

    @FindBy(how = How.XPATH, using = "/*xpath*/")
    public WebElement coverAmountElement;

    public void enterDetails() {
        if (names != null) {
            XSSFCell c = Read.getCell(names, 2,4);
            String coveramount = c.getStringCellValue();
            coverAmountElement.sendKeys(coveramount);
        }
    }
}
3
OneCricketeer 27 जुलाई 2018, 20:07
आपकी मदद के लिए बहुत बहुत शुक्रिया। कोड ने योजना के अनुसार काम किया। :-)
 – 
user10144659
27 जुलाई 2018, 17:25
वास्तव में मैं जिस आईडीई का उपयोग कर रहा था, उसने कोड को सहेजा नहीं था। लाइन XSSFSheet names = Read.getSheet("C:\\Users\\dindo\\Documents\\tests\\d2c-lv-int-01_DATA.xlsx", 0); मुझे एक हैंडल न किया गया java.lang.Exception दे रही है
 – 
user10144659
27 जुलाई 2018, 19:03
क्योंकि आपके मेथड में throws Exception है, लेकिन आप कोई ट्राई-कैच ब्लॉक नहीं डाल रहे हैं
 – 
OneCricketeer
27 जुलाई 2018, 20:03

आप किसी अन्य विधि/फ़ंक्शन के बाहर किसी विधि/फ़ंक्शन को तब तक कॉल नहीं कर सकते जब तक कि यह एक चर प्रारंभ करने के लिए न हो। इसके अलावा, getCell विधि एक void लौटाती है, जिसका अर्थ है कि आप इसे किसी भी चीज़ को असाइन करने के लिए उपयोग नहीं कर सकते हैं, साथ ही, आप एक अर्धविराम खो रहे हैं। तो इसे बदलें

Read cel = new Read();
cel.getcell(2,4)

कुछ इस तरह के लिए:

package Pages;

import Excel.Read;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

public class DetailsPage {

    @FindBy(how = How.XPATH, using = "/*xpath*/")
    public WebElement coveramountelement;


    public void EnterDetails() {
        Read cel = new Read();            
        String coveramount = cel.getcell(2,4);
        coveramountelement.sendKeys(coveramount);
    }
}

और getCell के लिए यह कुछ इस प्रकार है:

public String getcell(int row, int col){
    String stringresult = Names.getRow(row).getCell(col).getStringCellValue();
    return stringresult;
}
0
OneCricketeer 27 जुलाई 2018, 17:33
हालांकि, cel.intresult अभी भी संकलित नहीं होगा
 – 
OneCricketeer
27 जुलाई 2018, 17:03
फिर भी, जैसा कि क्रिकेट_007 की टिप्पणी से किया जा रहा है। कवर अमाउंट बनने के लिए मुझे इंट्रस्ट कैसे मिलेगा?
 – 
user10144659
27 जुलाई 2018, 17:12
अगर यह कोड काम नहीं कर रहा है, तो आपको जवाब स्वीकार नहीं करना चाहिए
 – 
OneCricketeer
27 जुलाई 2018, 17:19
उस पर ध्यान नहीं दिया। यह अब ठीक हो गया है।
 – 
Yserbius
27 जुलाई 2018, 17:24