お世話になってます。
実は、今Excelベースで作成したデータをあるDBにWeb上から
データを自動入力するというものを作成しています。
Javaを初めて早数週間ですが、以下のようなレベルのものしか
作成できませんでした。
Java玄人から見て以下のコードで、この辺が甘いとか
これは酷いと思う点をお聞かせ頂けないでしょうか?
今後、削除や更新版を作成予定の為、参考にしたいと考えます。
以上、宜しくお願いします。
(以下のものは一応動作します)
◎操作したいWeb画面1
◎操作したいWeb画面2
◎操作したいWeb画面3
◎操作したいWeb画面4
★尚、赤字が入力したいデータ及び押したいボタン等
◎Web操作側(SampleTest.java)
package Selenium_Test; import java.util.ArrayList; import java.util.List; import org.apache.commons.exec.util.StringUtils; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.Select; public class SampleTest { @SuppressWarnings("unchecked") public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "exe/chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("http://aaaaaaaa-chem.co.jp/?NextUrl=http://scms000027.aaaaaaa.co.jp/KeikouMstMenu/Menuhttpget"); Thread.sleep(2000); //Let the user actually see something! WebElement pass_id = driver.findElement(By.name("UserID")); pass_id.sendKeys("u0002000"); WebElement pass_word = driver.findElement(By.name("Password")); pass_word.sendKeys("****706"); pass_word.submit(); List<WebElement> elems = driver.findElements(By.tagName("input")); elems.get(0).submit(); //ReadExcelクラスのインスタンス生成 ReadExcel nitta = new ReadExcel(); List<String> my_data = new ArrayList<String>(nitta.Newenter()); int my_cnt = my_data.size(); for (int i = 0; i < my_data.size(); i++) { int my_num = i%6; switch (my_num) { case 0: String itemcode = my_data.get(i); WebElement elems2 = driver.findElement(By.id("txtShuHinCDSearch")); elems2.sendKeys(itemcode); driver.findElement(By.xpath("//*[@id=\"btnEdit\"]")).click(); break; case 1: String checkcharactric = my_data.get(i); WebElement elems3 = driver.findElement(By.xpath("//*[@id=\"txtHinKenToku\"]")); elems3.sendKeys(checkcharactric); Thread.sleep(1000); break; case 2: String itemtext = my_data.get(i); WebElement elems4 = driver.findElement(By.xpath("//*[@id=\"txtHinKenTokuTxt\"]")); elems4.sendKeys(itemtext); break; case 3: String jadge = my_data.get(i); WebElement elems5 = driver.findElement(By.xpath("//*[@id=\"ddlHanKbn\"]")); if (jadge.equals("08")) { Select selection = new Select(elems5); selection.selectByValue(jadge); }else {} break; case 4: String Lotnum = my_data.get(i); WebElement para1 = driver.findElement(By.xpath("//*[@id=\"txtHanLotSu\"]")); para1.sendKeys(Keys.BACK_SPACE); para1.sendKeys(Keys.BACK_SPACE); para1.sendKeys(Keys.BACK_SPACE); para1.sendKeys(Lotnum); driver.findElement(By.xpath("//*[@id=\"btnUpdateCheck\"]")).click(); break; case 5: String paranum = my_data.get(i); WebElement para2 = driver.findElement(By.xpath("//*[@id=\"txtParam1\"]")); para2 .sendKeys(paranum); driver.findElement(By.xpath("//*[@id=\"btnUpdateCheck\"]")).click(); Thread.sleep(1000); driver.findElement(By.xpath("//input[@value='はい']")).click(); Thread.sleep(2000); // Let the user actually see something! break; } if (my_num == 5 && my_cnt > 6 ) { driver.findElement(By.xpath("//*[@id=\"btnReturn\"]")).click(); List<WebElement> elems2 = driver.findElements(By.tagName("input")); elems2.get(0).submit(); }else {} } //driver.quit(); } }
◎ReadExcel.java
import java.io.FileInputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Objects; import org.apache.poi.ss.usermodel.*; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import java.util.List; public class ReadExcel { private static String INPUT_DIR = "C:\Users\u00050239\Desktop\Test\" ; private static int my_last; private static List<String> list1; private static int iw0; public List<String> Newenter() { String xlsxFileAddress = this.INPUT_DIR + "セコム.xls"; //共通インターフェースを扱える、WorkbookFactoryで読み込む try { Workbook wb = WorkbookFactory.create(new FileInputStream(xlsxFileAddress)); iw0 = 0; for (Sheet sheet : wb ) { Sheet sheet2 = wb.getSheetAt(iw0); String my_S = sheet2.getSheetName(); //if (my_S.equals("新規") || my_S.equals("更新") || my_S.equals("削除")) { if (my_S.equals("新規")){ for (Row row : sheet2) { this.my_last = sheet2.getLastRowNum(); int iw2 = 0; List<String> list1 = new ArrayList<String>(); for (Cell cell : row) { if (iw2 >= 1 && my_last >= iw2) { Row row2 = sheet2.getRow(iw2); //String str1 = null; String str1 = row2.getCell(0).getStringCellValue(); if (str1 != null) { list1.add(row2.getCell(0).getStringCellValue()); list1.add(row2.getCell(1).getStringCellValue()); list1.add(row2.getCell(2).getStringCellValue()); list1.add(row2.getCell(3).getStringCellValue().substring(0,2)); list1.add(row2.getCell(4).getStringCellValue()); list1.add(BigDecimal.valueOf(row2.getCell(5).getNumericCellValue()).toPlainString()); }else {} } iw2++; } return list1; } } iw0++; } wb.close(); }catch(Exception e) {} return null; } public int getlstrw() { return this.my_last ; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/27 23:03 編集