私はハードコードを避けるために、データを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);
}
私は正しいことをしていることを知りたいのですか? エクセルからの私のデータはメインクラスで読んでいません… エラー:
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()メソッドを使用する