質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2269閲覧

データ(Excelベース)の自動入力

Nitta

総合スコア96

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2018/11/27 06:53

編集2018/11/27 23:05

お世話になってます。
実は、今Excelベースで作成したデータをあるDBにWeb上から
データを自動入力するというものを作成しています。
Javaを初めて早数週間ですが、以下のようなレベルのものしか
作成できませんでした。
Java玄人から見て以下のコードで、この辺が甘いとか
これは酷いと思う点をお聞かせ頂けないでしょうか?
今後、削除や更新版を作成予定の為、参考にしたいと考えます。
以上、宜しくお願いします。
(以下のものは一応動作します)

◎元データ(Excelベース)
イメージ説明

◎操作したい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 ; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

イントラのサイトだと思いますが、インターネット上のWebサービスのサイトでいくらよいと思われるようなUIでもイントラの場合はレガシーなUIの方が好まれる場合もありますので実際に使用される方の意見を聞いたほうがよいのではないかと思います。

プログラムどうのというよりイントラサイトの情報をインターネット上に公開してしまうほうが問題になるのではないかと心配してしまいます。部署名や個人名も出てますし...
心配ならば早めにこの記事を削除したほうが良いかと思います。

投稿2018/11/27 09:57

編集2018/11/27 09:58
euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2018/11/27 23:03 編集

返信ありがとうございます。 早速、一部修正しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問