2016-10-17 5 views
0

Я написал фрагмент кода для установки локаторов, которые будут использоваться в моем селеном scipt в hashmap, также написал там набор записей, чтобы получить значения с карты.Получение значений из Hashmap в другом классе

public class ReadDatafromExcel { 

    @Test 
    public void putIntoHashmap() throws IOException  
    { 

     FileInputStream inputStream = new FileInputStream("/home/suvin/Documents/SeleniumWebdriver/Script/PaytmAutomationFramework/src/testUtilities/TestData.xlsx"); 

      XSSFWorkbook workbook= new XSSFWorkbook(inputStream); 

      XSSFSheet firstSheet = workbook.getSheetAt(0); 
      Iterator<Row> rowiterator = firstSheet.iterator(); 

      HashMap<String,String> map= new HashMap<String, String>(); 
      String key= null; 
      String value= null; 

      while (rowiterator.hasNext()) { 
       Row nextRow = rowiterator.next(); 

       Iterator<Cell> cellIterator = nextRow.cellIterator(); 
       int i; 
       for (i=0;i<=1;i++) 
       { 
        Cell cell = cellIterator.next(); 

        if(i==0) 
        { 
         key =cell.getStringCellValue(); 
        } 
        if(i==1) 
        { 
         value=cell.getStringCellValue(); 
         break; 
        } 

       } 
       map.put(key, value);  
      } 

      // String Retrieved_value= map.get("Test11"); 
      // System.out.println(Retrieved_value); 

      Set set= (Set)map.entrySet(); 
      Iterator itr= set.iterator(); 
      while(itr.hasNext()) 
      { 
       Map.Entry entry= (Entry)itr.next();  
       System.out.println(entry.getKey()+":"+entry.getValue()); 

      } 

     } 
} 

Теперь я хочу использовать этот файл в другом классе. Я создал объект-е класса ReadDatafromExcel, как это в новом классе

public class ccTransactions { 

    public ReadDatafromExcel rd = new ReadDatafromExcel(); 

}

Я хочу использовать значение hasmap созданного в ReadDatafromExcel в этом классе. Как мне это сделать?

что-то вроде

driver.findelement(By.Xpath(USE VALUE FROM HASHMAP)).sendkeys(); 

ответ

0

Изменение map быть полем класса ReadDatafromExcel как private HashMap<String,String> map= new HashMap<String, String>(); и удалить его из метода putIntoHashmap() затем добавить еще один метод

public String getValue(String key){ 
return map.get(key); 
} 

, то вы можете использовать это как rd.get(key);

+0

Привет, Спасибо за ваш ответ. Это действительно помогает. Однако теперь, когда я ввожу числовое значение для чтения из excel, я получаю сообщение об ошибке «Невозможно получить значение STRING из ячейки NUMERIC». Как я могу изменить приведенный выше код, чтобы справиться с этим? –

+0

Затем используйте nextRow.getCell (0) .getNumericCellValue(); вместо nextRow.getCell (0) .getStringCellValue(); –

0

Измените метод следующим образом:

public Map<String, String> putIntoHashmap(String filePath) throws IOException 

    { 

      FileInputStream inputStream = new FileInputStream(filePath); 

      XSSFWorkbook workbook= new XSSFWorkbook(inputStream); 

      XSSFSheet firstSheet = workbook.getSheetAt(0); 
      Iterator<Row> rowiterator = firstSheet.iterator(); 

      HashMap<String,String> map= new HashMap<String, String>(); 
      String key= null; 
      String value= null; 

      while (rowiterator.hasNext()) { 
       Row nextRow = rowiterator.next(); 

       Iterator<Cell> cellIterator = nextRow.cellIterator(); 

       key = nextRow.getCell(0).getStringCellValue(); 
       value = nextRow.getCell(1).getStringCellValue(); 

       map.put(key, value);  
      } 

     return map; 
    } 

Теперь, вызовите метод после создания объекта вашего класса, как:

ReadDatafromExcel rd = new ReadDatafromExcel(); 
Map<String, String> data = rd.putIntoHashmap("Path to your excel file"); 

А затем, использовать данные из ваших методов испытаний:

driver.findelement(By.Xpath(data.get("**your desired key**"))).sendkeys(); 
+0

Привет, Спасибо за ваш ответ. Это действительно помогает. Однако теперь, когда я ввожу числовое значение для чтения из excel, я получаю сообщение об ошибке «Невозможно получить значение STRING из ячейки NUMERIC». Как я могу изменить приведенный выше код, чтобы справиться с этим? –

Смежные вопросы