セレンのPOMパターンでExcelからデータを読み取ることができません

私はハードコードを避けるために、データをExcelファイルに保存しておき、そこからデータを読み込みます。

Page

public void fielding(String field,String dist,String velo,String diff) {
  enterFielding.sendKeys(field);
  saveButton.click();
  textDistance.sendKeys(dist);
  dropDown.click();
  driver.findElement(By.name(velo)).click();
  textDifficulty.sendKeys(diff);
  buttonUpdate.click();
}

public void popOuttop2(String field,String dist,String velo,String diff) {
 //BH
 buttonB.click();
 buttonH.click();
 popOutButton.click();
 fielding(field,dist,velo,diff);
 buttonUpdate.click();
}

手順

public class BaseBallEventSteps {

    WebDriver driver;
    BaseBallOutEvents baseOut;
    public BaseBallEventSteps() {
        baseOut = new BaseBallOutEvents(driver);
        baseOut=  PageFactory.initElements(DriverManager.driver, BaseBallOutEvents.class);
    }

    public void firstInningTopOut1(String field,String dist,String velo,String diff) throws InterruptedException 
    {
        baseOut.strikeOuttop1();
        baseOut.popOuttop2(field, dist, velo, diff);
        baseOut.strikeOutTop3();
    }
}

メインメソッド

public static void main(String[] args) throws InterruptedException, IOException {


 DriverManager manager=new DriverManager();

 BaseBallEventSteps bs=new BaseBallEventSteps();

 File f= new File("Player_names.xlsx");
 FileInputStream fs= new FileInputStream(f);
 XSSFWorkbook wb= new XSSFWorkbook(fs); 
 XSSFSheet bb_players=  wb.getSheet("Sheet2");
 int rowcount= bb_players.getLastRowNum();

 String field =  bb_players.getRow(1).getCell(1).getStringCellValue();
 String dist= bb_players.getRow(1).getCell(2).getStringCellValue();
 String velo=bb_players.getRow(1).getCell(3).getStringCellValue();
 String diff=bb_players.getRow(1).getCell(4).getStringCellValue();

 bs.firstInningTopOut1(field,dist,velo,diff);
}

enter image description here

私は正しいことをしていることを知りたいのですか? エクセルからの私のデータはメインクラスで読んでいません… エラー:

Exception in thread "main" java.lang.IllegalStateException: Cannot get a text value from a numeric cell

私は、各セルから値を読み取るために、同じ String field =
bb_players.getRow(1).getCell(1).toString();

を書く必要があるたびに、より多くのものでなければなりません。

誰でも私のコードを見直してください。正しいことをしているかどうか、私はさらに進むことができますか?

ベストアンサー

私の場合、問題は使用しようとしている値のタイプにあるようです。セルにはおそらく数値型が含まれており、コード内に文字列が必要です。
私は次のいずれかを提案します:

  • Excelのセルタイプをテキストに変更する
  • getStringCellValue()の代わりにgetIntegerCellValue()または同様のメソッドを試してください
  • toString()メソッドを使用する

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です