diff --git a/convert.bat b/convert.bat index 21c95f0..8d58bb8 100644 --- a/convert.bat +++ b/convert.bat @@ -13,32 +13,32 @@ @echo off @rem ============================================================================ -@rem seleniumCodeBuilder による変換処理を実行します。 +@rem seleniumCodeBuilder 縺ォ繧医k螟画鋤蜃ヲ逅繧貞ョ溯。後@縺セ縺吶 @rem ============================================================================ -@rem --- 環境変数やカレントディレクトリをローカル化します。 +@rem --- 迺ー蠅螟画焚繧繧ォ繝ャ繝ウ繝医ョ繧」繝ャ繧ッ繝医Μ繧偵Ο繝シ繧ォ繝ォ蛹悶@縺セ縺吶 setlocal -rem --- groovy スクリプトの格納ディレクトリに変更します。 +rem --- groovy 繧ケ繧ッ繝ェ繝励ヨ縺ョ譬シ邏阪ョ繧」繝ャ繧ッ繝医Μ縺ォ螟画峩縺励∪縺吶 cd %~dp0\src\main\groovy echo ------------------------------------------ -echo --- 置換処理を実施します... +echo --- 鄂ョ謠帛ヲ逅繧貞ョ滓命縺励∪縺... echo ------------------------------------------ -java -cp .;../../../lib\* groovy.ui.GroovyMain SeleniumCodeBuilder.groovy %~dp0/input %~dp0/output %~dp0/setting.yaml +java -Dfile.encoding=UTF-8 -cp .;../../../lib/* groovy.ui.GroovyMain SeleniumCodeBuilder.groovy %~dp0/input %~dp0/output %~dp0/setting.yaml echo. echo ------------------------------------------ -echo --- パッケージ階層を設定します... +echo --- 繝代ャ繧ア繝シ繧ク髫主ア、繧定ィュ螳壹@縺セ縺... echo ------------------------------------------ -java -cp .;../../../lib\* groovy.ui.GroovyMain PackageModifier.groovy %~dp0/output %~dp0/output +java -Dfile.encoding=UTF-8 -cp .;../../../lib/* groovy.ui.GroovyMain PackageModifier.groovy %~dp0/output %~dp0/output -@rem --- 引数付きで本バッチが起動された場合は、pauseを行いません。 +@rem --- 蠑墓焚莉倥″縺ァ譛ャ繝舌ャ繝√′襍キ蜍輔&繧後◆蝣エ蜷医ッ縲}ause繧定。後>縺セ縺帙s縲 @if "%1"=="" ( pause ) -@rem --- 環境変数等のローカル化を終了します。 +@rem --- 迺ー蠅螟画焚遲峨ョ繝ュ繝シ繧ォ繝ォ蛹悶r邨ゆコ縺励∪縺吶 endlocal -@rem --- 正常終了します。 +@rem --- 豁」蟶ク邨ゆコ縺励∪縺吶 exit /b 0 diff --git a/convert.sh b/convert.sh new file mode 100644 index 0000000..995a3aa --- /dev/null +++ b/convert.sh @@ -0,0 +1,33 @@ +# ---------------------------------------------------------------------------- +# Copyright (c) Acroquest Technology Co, Ltd. All Rights Reserved. +# Please read the associated COPYRIGHTS file for more details. +# +# THE SOFTWARE IS PROVIDED BY Acroquest Technology Co., Ltd., +# WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDER BE LIABLE FOR ANY +# CLAIM, DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING +# OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. +# ---------------------------------------------------------------------------- + +# ============================================================================ +# seleniumCodeBuilder 縺ォ繧医k螟画鋤蜃ヲ逅繧貞ョ溯。後@縺セ縺吶 +# ============================================================================ + +# --- groovy 繧ケ繧ッ繝ェ繝励ヨ縺ョ譬シ邏阪ョ繧」繝ャ繧ッ繝医Μ縺ォ螟画峩縺励∪縺吶 +cd $(dirname $0) +cd src/main/groovy +echo ------------------------------------------ +echo --- 鄂ョ謠帛ヲ逅繧貞ョ滓命縺励∪縺... +echo ------------------------------------------ +java -cp .:../../../lib/* groovy.ui.GroovyMain SeleniumCodeBuilder.groovy ../../../input ../../../output ../../../setting.yaml + +echo ------------------------------------------ +echo --- 繝代ャ繧ア繝シ繧ク髫主ア、繧定ィュ螳壹@縺セ縺... +echo ------------------------------------------ +java -cp .:../../../lib/* groovy.ui.GroovyMain PackageModifier.groovy ../../../output ../../../output + +# --- 豁」蟶ク邨ゆコ縺励∪縺吶 +exit 0 + diff --git a/setting.yaml b/setting.yaml index e3db60e..e174524 100644 --- a/setting.yaml +++ b/setting.yaml @@ -13,18 +13,19 @@ # ---------------------------------------------------------------------------- # #======================================================== -# Selenium Code Builder 変換設定ファイル +# Selenium Code Converter 螟画鋤險ュ螳壹ヵ繧。繧、繝ォ # version: 0.5.0 # memo: -# * 「after : |2」の指定は、置換先が複数行でインデントが 2 であることを意味します。詳細はyaml仕様を参照ください。 +# * 縲径fter : |2縲阪ョ謖螳壹ッ縲∫スョ謠帛医′隍謨ー陦後〒繧、繝ウ繝繝ウ繝医′ 2 縺ァ縺ゅk縺薙→繧呈э蜻ウ縺励∪縺吶りゥウ邏ー縺ッyaml莉墓ァ倥r蜿らァ縺上□縺輔>縲 # #======================================================== # #------------------------------------------------------------------------------ -# Import 定義の追加 +# Import 螳夂セゥ縺ョ霑ス蜉 #------------------------------------------------------------------------------ -- before : 'public class ([a-zA-Z0-9]+) \{' +- before : '\npublic class ([a-zA-Z0-9]+) \{' after : |2 + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -41,141 +42,262 @@ public class $1 { - /** キャプチャファイル名末尾にブラウザ名を追加 */ - private boolean captureFileWithBrowserName = false; - /** テスト対象のブラウザ */ + /** 繝繧ケ繝亥ッセ雎。縺ョ繝悶Λ繧ヲ繧カ */ private String browser; - /** 画像ファイルの保存ディレクトリ */ + /** 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ縺ョ菫晏ュ倥ョ繧」繝ャ繧ッ繝医Μ */ private String captureDirectory; - + /** 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷阪↓繧ッ繝ゥ繧ケ蜷阪r霑ス蜉 */ + private boolean addClassNameToCaptureFile = false; + /** 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷阪↓騾」逡ェ繧定ソス蜉 */ + private boolean addSeqNoToCaptureFile = false; + /** 逕サ蜒上く繝」繝励メ繝」繝輔ぃ繧、繝ォ縺ョ騾」逡ェ */ + private int captureSeqNo = 0; + /** 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷肴忰蟆セ縺ォ繝悶Λ繧ヲ繧カ蜷阪r霑ス蜉 */ + private boolean captureFileWithBrowserName = false; + #------------------------------------------------------------------------------ -# ドライバ定義の追加 +# 繝峨Λ繧、繝仙ョ夂セゥ縺ョ霑ス蜉 #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)driver = new FirefoxDriver\(\);' +- before : '\n([^\S\x0a\x0d]*)driver = new FirefoxDriver\(\);' after : |2 - $1//SCB: 以下をコメントイン/コメントアウトしてブラウザを指定します。 + + $1//SCC: 莉・荳九r繧ウ繝。繝ウ繝医う繝ウ/繧ウ繝。繝ウ繝医い繧ヲ繝医@縺ヲ繝悶Λ繧ヲ繧カ繧呈欠螳壹@縺セ縺吶 $1//browser = "ie"; $1browser = "edge"; $1//browser = "firefox"; $1//browser = "edge"; $1//browser = "chrome"; $1//browser = "safari-mac"; + $1//browser = "chrome-mac"; + $1//browser = "firefox-mac"; $1//browser = "ie64"; $1//browser = "firefox64"; - $1// SCB: propertyでのブラウザ指定があればそちらを優先します。 + $1// SCC: property縺ァ縺ョ繝悶Λ繧ヲ繧カ謖螳壹′縺ゅl縺ー縺昴■繧峨r蜆ェ蜈医@縺セ縺吶 $1String propBrowser = System.getProperty("browser"); $1if (propBrowser != null){ $1 browser = propBrowser; $1} - $1captureDirectory = System.getProperty("capturedirectory"); - $1if (captureDirectory == null){ + $1captureDirectory = System.getProperty("capturedirectory"); // SCC: 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ縺ョ菫晏ュ伜エ謇縺ョ繝励Ο繝代ユ繧」謖螳壹r蜿門セ励 + $1if (captureDirectory == null){ // SCC: 謖螳壹′縺ェ縺蝣エ蜷医ッ繝励Ο繧ク繧ァ繧ッ繝医Ν繝シ繝医↓菫晏ュ倥@縺セ縺吶 $1 captureDirectory = "."; $1} + + $1addClassNameToCaptureFile = true; // SCC: 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷阪↓繧ッ繝ゥ繧ケ蜷阪r霑ス蜉縲 + $1String propClassname2capfile = System.getProperty("classname2capfile"); // SCC: 繝励Ο繝代ユ繧」謖螳壹′縺ゅl縺ー縺昴■繧峨r蜆ェ蜈医@縺セ縺吶 + $1if (propClassname2capfile != null){ + $1 addClassNameToCaptureFile = Boolean.parseBoolean(propClassname2capfile); + $1} + + $1addSeqNoToCaptureFile = true; // SCC: 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷阪↓騾」逡ェ繧定ソス蜉縲 + $1String propSeqno2capfile = System.getProperty("seqno2capfile"); // SCC: 繝励Ο繝代ユ繧」謖螳壹′縺ゅl縺ー縺昴■繧峨r蜆ェ蜈医@縺セ縺吶 + $1if (propSeqno2capfile != null){ + $1 addSeqNoToCaptureFile = Boolean.parseBoolean(propSeqno2capfile); + $1} + + $1captureFileWithBrowserName = false; // SCC: 逕サ髱「繧ュ繝」繝励メ繝」繝輔ぃ繧、繝ォ蜷阪ョ譛ォ蟆セ縺ォ繝悶Λ繧ヲ繧カ蜷阪r霑ス蜉縺励↑縺縲 + $1String propBrowsername2capfile = System.getProperty("browsername2capfile"); // SCC: 繝励Ο繝代ユ繧」謖螳壹′縺ゅl縺ー縺昴■繧峨r蜆ェ蜈医@縺セ縺吶 + $1if (propBrowsername2capfile != null){ + $1 captureFileWithBrowserName = Boolean.parseBoolean(propBrowsername2capfile); + $1} + + $1driver = createWebDriver(browser); // SCC: WebDriver 繧剃ス懈舌@縺セ縺吶 + +#------------------------------------------------------------------------------ +# 繝峨Λ繧、繝占ィュ螳 +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)(driver.manage\(\)\.timeouts\(\)\.implicitlyWait\(30, TimeUnit\.SECONDS\);)' + after : |2 + + $1$2 + $1driver.manage().window().setPosition(new Point(0,0)); + $1driver.manage().window().setSize(new Dimension(1280,800)); // SCC: 繝悶Λ繧ヲ繧カ繧オ繧、繧コ險ュ螳壹 + $1//driver.manage().window().maximize(); // SCC: 繝悶Λ繧ヲ繧カ繧呈怙螟ァ蛹悶☆繧句エ蜷医 +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : selectFrame relative=top +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| relative=top \| \]\]' + after : |2 - $1driver = createWebDriver(browser); // SCB: WebDriver を作成します。 + $1driver.switchTo().defaultContent(); // SCC: Frame繝医ャ繝励↓謌サ繧九 +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : selectFrame index= +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| index=(\d+) \| \]\]' + after : |2 + + $1driver.switchTo().defaultContent(); // SCC: Experimental. Frame繝医ャ繝励↓謌サ縺」縺ヲ縺九i縲∵ャ。繝ャ繝吶Ν 繝輔Ξ繝シ繝縺ク縺ョ遘サ蜍輔r諠ウ螳壹 + $1driver.switchTo().frame($2); // SCC: 繝輔Ξ繝シ繝繝阪せ繝医′豺ア縺蝣エ蜷医ッ隕∬ェソ謨エ縲 +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : selectFrame +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| ([^=]+?) \| \]\]' + after : |2 - $1captureFileWithBrowserName=true; // SCB: 画面キャプチャファイル名の末尾にブラウザ名を追記します。 + $1driver.switchTo().defaultContent(); // SCC: Experimental. Frame繝医ャ繝励↓謌サ縺」縺ヲ縺九i縲∵ャ。繝ャ繝吶Ν 繝輔Ξ繝シ繝縺ク縺ョ遘サ蜍輔r諠ウ螳壹 + $1driver.switchTo().frame("$2"); // SCC: 繝輔Ξ繝シ繝繝阪せ繝医′豺ア縺蝣エ蜷医ッ隕∬ェソ謨エ縲 +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : selectWindow +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectWindow \| name=(.+?) \| \]\]' + after : |2 + $1try{ + $1 driver.switchTo().window("$2"); + $1}catch(NoSuchWindowException e){ // SCC: 謖螳壼錐縺ョ繧ヲ繧」繝ウ繝峨え縺後↑縺蝣エ蜷医ッ繝輔Ξ繝シ繝縺ィ莉ョ螳壹 + $1 driver.switchTo().defaultContent(); // SCC: Experimental. Frame謫堺ス懈凾縺ォSelenium IDE縺ォ縺ヲselectWindow縺ィ縺励※險倬鹸縺輔l縺溘 + $1 driver.switchTo().frame("$2"); // SCC: 繝輔Ξ繝シ繝繝阪せ繝医′豺ア縺蝣エ蜷医ッ隕∬ェソ謨エ縲 + $1} #------------------------------------------------------------------------------ -# ドライバ設定 +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : selectWindow null #------------------------------------------------------------------------------ -- before : ' (driver.manage\(\)\.timeouts\(\)\.implicitlyWait\(30, TimeUnit\.SECONDS\);)' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectWindow \| null \| \]\]' after : |2 - $1 - driver.manage().window().setPosition(new Point(0,0)); - driver.manage().window().setSize(new Dimension(1280,800)); // SCB: ブラウザサイズ設定。 - //driver.manage().window().maximize(); // SCB: ブラウザを最大化する場合。 + + $1driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString()); // SCC: Experimental. [0]縺ッ蠢隕√↓蠢懊§縺ヲ隱ソ謨エ縲 #------------------------------------------------------------------------------ -# 未対応コマンド : selectFrame +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : openWindow ${螟画焚} #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| relative=top \| \]\]' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[openWindow \| \$\{(.+?)\} \| (.+?)\]\]' after : |2 - $1driver.switchTo().defaultContent(); // SCB: Frameトップに戻る。 -- before : '([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| ([^=]+?) \| \]\]' + + $1((JavascriptExecutor) driver).executeScript("window.open('" + $2 + "','$3')"); // SCC: Experimental. +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : openWindow http~ +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[openWindow \| (http.+?) \| (.+?)\]\]' after : |2 - $1driver.switchTo().defaultContent(); // SCB: Experimental. Frameトップに戻ってから、次レベル フレームへの移動を想定。 - $1driver.switchTo().frame("$2"); // SCB: フレームネストが深い場合は要調整。 + + $1((JavascriptExecutor) driver).executeScript("window.open('$2','$3')"); // SCC: Experimental. #------------------------------------------------------------------------------ -# 未対応コマンド : selectWindow +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : openWindow #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectWindow \| name=(.+?) \| \]\]' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[openWindow \| (.+?) \| (.+?)\]\]' after : |2 - $1driver.switchTo().defaultContent(); // SCB: Experimental. Frame操作時にSelenium IDEで出現し、Export時にUnsupported commandとなった。 - $1driver.switchTo().frame("$2"); // SCB: フレームネストが深い場合は要調整。 + + $1((JavascriptExecutor) driver).executeScript("window.open('" + baseUrl + "$2" + "','$3')"); // SCC: Experimental. #------------------------------------------------------------------------------ -# 未対応コマンド : キャプチャ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : 繧ュ繝」繝励メ繝」 #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)//.*?\| [a-zA-Z]:[^\x0a\x0d]*[\\/]([a-zA-Z0-9_-].*\.(png|jpg)).*\]' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[captureEntirePageScreenshot \| [a-zA-Z]:[^\x0a\x0d]*[\\/]([a-zA-Z0-9_-].*\.(png|jpg)).*\]' after : |2 + $1{ $1 capture("$2"); $1} #------------------------------------------------------------------------------ -# 未対応コマンド : Dom locators -# Selenium IDE Options > フォーマット > Java/JUnit4/WebDriverにて Show Selenese オンでエクスポートした場合 +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : Dom locators +# Selenium IDE Options > 繝輔か繝シ繝槭ャ繝 > Java/JUnit4/WebDriver縺ォ縺ヲ Show Selenese 繧ェ繝ウ縺ァ繧ィ繧ッ繧ケ繝昴シ繝医@縺溷エ蜷 #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)(// click \| (.+?) \| )\n[^\S\x0a\x0d]*// ERROR: Caught exception \[Error: Dom locators are not implemented yet\!\]' +- before : '\n([^\S\x0a\x0d]*)(// click \| (.+?) \| )\n[^\S\x0a\x0d]*// ERROR: Caught exception \[Error: Dom locators are not implemented yet\!\]' after : |2 + $1$2 - $1((WebElement) ((JavascriptExecutor) driver).executeScript("return $3;")).sendKeys(Keys.CONTROL); // SCB: Experimental. 安定化調整 - $1Thread.sleep(500); // SCB: 安定化調整 - $1((WebElement) ((JavascriptExecutor) driver).executeScript("return $3;")).click(); // SCB: Experimental. + $1Thread.sleep(100); // SCC: 螳牙ョ壼喧隱ソ謨エ + $1click(((WebElement) ((JavascriptExecutor) driver).executeScript("return $3;"))); +# $1Thread.sleep(100); // SCC: 螳牙ョ壼喧隱ソ謨エ +# $1((WebElement) ((JavascriptExecutor) driver).executeScript("return $3;")).sendKeys(Keys.CONTROL); // SCC: Experimental. 螳牙ョ壼喧隱ソ謨エ +# $1Thread.sleep(500); // SCC: 螳牙ョ壼喧隱ソ謨エ +# $1((WebElement) ((JavascriptExecutor) driver).executeScript("return $3;")).click(); // SCC: Experimental. +#------------------------------------------------------------------------------ +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : StoreEval 繝壹シ繧ク繧オ繧、繧コ螟画峩逕ィ javascript 繧ウ繝槭Φ繝峨∈縺ョ迚ケ蛻・蟇セ蠢 +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[getEval \| javascript\{window\.opener\.resizeTo\((\d+),(\d+)\)\} \| \]\]' + after : |2 + + $1driver.manage().window().setSize(new Dimension($2,$3)); // SCC: 繝壹シ繧ク繧オ繧、繧コ螟画峩逕ィ javascript 繧ウ繝槭Φ繝峨°繧臥スョ謠帙 + #------------------------------------------------------------------------------ -# 未対応コマンド : StoreEval 暫定コメントアウト対応 +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : StoreEval 證ォ螳壹さ繝。繝ウ繝医い繧ヲ繝亥ッセ蠢 #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[getEval \| //\\-(.+?) \| \]\]' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[getEval \| //\\-(.+?) \| \]\]' after : |2 - $1((JavascriptExecutor) driver).executeScript("$2"); // IDE 上での js 定義にて暫定コメントアウト文字列「//\\-」を検出したので、コメントアウトを解除しました。 + + $1((JavascriptExecutor) driver).executeScript("$2"); // IDE 荳翫〒縺ョ js 螳夂セゥ縺ォ縺ヲ證ォ螳壹さ繝。繝ウ繝医い繧ヲ繝域枚蟄怜励//\\-縲阪r讀懷コ縺励◆縺ョ縺ァ縲√さ繝。繝ウ繝医い繧ヲ繝医r隗」髯、縺励∪縺励◆縲 #------------------------------------------------------------------------------ -# 未対応コマンド : StoreEval +# 譛ェ蟇セ蠢懊さ繝槭Φ繝 : StoreEval #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[getEval \| (.+?) \| \]\]' +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[getEval \| (.+?) \| \]\]' after : |2 + $1((JavascriptExecutor) driver).executeScript("$2"); #------------------------------------------------------------------------------ -# 安定化調整 : click +# 螳牙ョ壼喧隱ソ謨エ : click #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)(driver.findElement\(.+?\)).click\(\);' +- before : '\n([^\S\x0a\x0d]*)(driver.findElement\((.+?)\)).click\(\);' after : |2 - $1$2.sendKeys(Keys.CONTROL); // SCB: 安定化調整 - $1Thread.sleep(500); // SCB: 安定化調整 - $1$2.click(); + + $1clickElement($3); +#--- 隕∫エ豈弱↓蠕ョ隱ソ謨エ縺悟ソ隕√↑蝣エ蜷医ッ縲∽ク願ィ倥r繧ウ繝。繝ウ繝亥喧縺励※莉・荳九r菴ソ逕ィ縺励※縺上□縺輔>縲 +# $1$2.sendKeys(Keys.CONTROL); // SCC: 螳牙ョ壼喧隱ソ謨エ +# $1Thread.sleep(500); // SCC: 螳牙ョ壼喧隱ソ謨エ +# $1$2.click(); #------------------------------------------------------------------------------ -# 安定化調整 : driver.get +# 螳牙ョ壼喧隱ソ謨エ : driver.get #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)(driver.get\(baseUrl \+ ".*?"\);)' +- before : '\n([^\S\x0a\x0d]*)(driver.get\(baseUrl \+ ".*?"\);)' after : |2 + $1$2 - $1driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // SCB: 安定化調整 + $1driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // SCC: 螳牙ョ壼喧隱ソ謨エ #------------------------------------------------------------------------------ -# ブラウザ終了 +# 繝悶Λ繧ヲ繧カ邨ゆコ #------------------------------------------------------------------------------ -- before : ' driver.quit\(\);' +- before : '\n([^\S\x0a\x0d]*)driver.quit\(\);' after : |2 - //Thread.sleep(1500); // SCB: 目視確認用 - driver.quit\(\); + + $1driver.quit\(\); #------------------------------------------------------------------------------ -# ヘルパー関数定義の追加 +# 繝倥Ν繝代シ髢「謨ー螳夂セゥ縺ョ霑ス蜉 #------------------------------------------------------------------------------ - before : '(}\s$)' after : |2 /** - * 画面キャプチャを指定ファイル名で保存する。 + * 逕サ髱「隕∫エ繧偵け繝ェ繝繧ッ縺吶k縲 + * + * @param element 逕サ髱「隕∫エ + */ + public void click(WebElement element) throws Exception + { + element.sendKeys(Keys.CONTROL); // SCC: 螳牙ョ壼喧隱ソ謨エ + Thread.sleep(500); // SCC: 螳牙ョ壼喧隱ソ謨エ + element.click(); + } + + /** + * 逕サ髱「隕∫エ繧定ヲ九▽縺代※繧ッ繝ェ繝繧ッ縺吶k縲 * - * @param fileName 保存ファイル名 + * @param locator 隕∫エ繝ュ繧ア繝シ繧ソ */ - public void capture(String fileName) throws Exception + public void clickElement(By locator) throws Exception + { + click(driver.findElement(locator)); + } + + /** + * 逕サ髱「繧ュ繝」繝励メ繝」繧呈欠螳壹ヵ繧。繧、繝ォ蜷阪〒菫晏ュ倥☆繧九 + * + * @param fileName 菫晏ュ倥ヵ繧。繧、繝ォ蜷 + */ + public void capture(String fileName) throws Exception { String newFileName = fileName; - if(captureFileWithBrowserName == true){ + if(captureFileWithBrowserName == true){ // SCC: 繝悶Λ繧ヲ繧カ蜷阪r霑ス蜉縺励∪縺吶 Capabilities cap = ((RemoteWebDriver) driver).getCapabilities(); String browserName = cap.getBrowserName().toLowerCase(); newFileName = FilenameUtils.removeExtension(fileName) + '_' + browserName + '.' + FilenameUtils.getExtension(fileName); } + if(addSeqNoToCaptureFile == true){ // SCC: 騾」逡ェ繧定ソス蜉縺励∪縺吶 + captureSeqNo += 1; + newFileName = String.format("%03d", captureSeqNo) + '_' + newFileName; + } + if(addClassNameToCaptureFile == true){ // SCC: 繧ッ繝ゥ繧ケ蜷阪r霑ス蜉縺励∪縺吶 + String classNm = this.getClass().getSimpleName(); + newFileName = classNm + '_' + newFileName; + } capture(driver, Paths.get(captureDirectory), newFileName); } @@ -202,10 +324,10 @@ } /** - * 引数に指定された webdriver を作成する。 + * 蠑墓焚縺ォ謖螳壹&繧後◆ webdriver 繧剃ス懈舌☆繧九 * - * @param browserName ブラウザ名 - * @return WebDriverオブジェクト + * @param browserName 繝悶Λ繧ヲ繧カ蜷 + * @return WebDriver繧ェ繝悶ず繧ァ繧ッ繝 */ public static WebDriver createWebDriver(String browserName){ WebDriver driver = null; @@ -221,6 +343,12 @@ driver = new ChromeDriver(); break; + case "chrome-mac": + System.setProperty("webdriver.chrome.driver",new File(".").getAbsoluteFile().getParent() + + "/lib/chromedriver_mac64"); + driver = new ChromeDriver(); + break; + case "ie": System.setProperty("webdriver.ie.driver", new File(".").getAbsoluteFile().getParent() @@ -241,6 +369,12 @@ driver = new FirefoxDriver(); break; + case "firefox-mac": + System.setProperty("webdriver.gecko.driver",new File(".").getAbsoluteFile().getParent() + + "/lib/geckodriver_macos"); + driver = new FirefoxDriver(); + break; + case "firefox64": System.setProperty("webdriver.gecko.driver",new File(".").getAbsoluteFile().getParent() + "\\\\lib\\\\geckodriver64.exe"); diff --git a/src/main/groovy/FileUtil.groovy b/src/main/groovy/FileUtil.groovy index 819697c..126e026 100644 --- a/src/main/groovy/FileUtil.groovy +++ b/src/main/groovy/FileUtil.groovy @@ -19,7 +19,7 @@ import java.util.Collections; import java.util.List; /** - * ファイルシステム関連のユーティリティクラス。 + * 繝輔ぃ繧、繝ォ繧キ繧ケ繝繝髢「騾」縺ョ繝ヲ繝シ繝繧」繝ェ繝繧」繧ッ繝ゥ繧ケ縲 * */ public class FileUtil { diff --git a/src/main/groovy/JavaFileFilter.groovy b/src/main/groovy/JavaFileFilter.groovy index 232035f..210d909 100644 --- a/src/main/groovy/JavaFileFilter.groovy +++ b/src/main/groovy/JavaFileFilter.groovy @@ -16,7 +16,7 @@ import java.io.File import java.io.FilenameFilter; /** - * Javaファイルのフィルタリングのためのクラス。 + * Java繝輔ぃ繧、繝ォ縺ョ繝輔ぅ繝ォ繧ソ繝ェ繝ウ繧ー縺ョ縺溘a縺ョ繧ッ繝ゥ繧ケ縲 * */ class JavaFileFilter implements FilenameFilter { diff --git a/src/main/groovy/PackageModifier.groovy b/src/main/groovy/PackageModifier.groovy index d92c5ac..1ce0df2 100644 --- a/src/main/groovy/PackageModifier.groovy +++ b/src/main/groovy/PackageModifier.groovy @@ -13,56 +13,56 @@ import java.io.File; -// 対象のファイルにRootフォルダからのパッケージを追加する。 +// 蟇セ雎。縺ョ繝輔ぃ繧、繝ォ縺ォRoot繝輔か繝ォ繝縺九i縺ョ繝代ャ繧ア繝シ繧ク繧定ソス蜉縺吶k縲 boolean isExecute = checkArgs(args); if (!isExecute) { - println "処理を終了します。"; + println "蜃ヲ逅繧堤オゆコ縺励∪縺吶"; return; } /** - * 引数チェックを行う。 + * 蠑墓焚繝√ぉ繝繧ッ繧定。後≧縲 * */ def checkArgs(String[] values) { - String commandLineMessage = "使用法: groovy -e targetPath(file or directory) outputPath(directory) settingPath"; - // 一つもなければNG + String commandLineMessage = "蠢隕√↑蠑墓焚: targetPath(file or directory) outputPath(directory)"; + // 荳縺、繧ゅ↑縺代l縺ーNG if (values.size() <= 1) { - println "引数が足りません。"; + println "蠑墓焚縺瑚カウ繧翫∪縺帙s縲"; println commandLineMessage; return false; } - // 第一引数のファイルもしくはフォルダがあるか確認する。 + // 隨ャ荳蠑墓焚縺ョ繝輔ぃ繧、繝ォ繧ゅ@縺上ッ繝輔か繝ォ繝縺後≠繧九°遒コ隱阪☆繧九 String inputPath = values[0]; File file = new File(inputPath); if(file.exists() == false) { - println "変換先のパスにファイルもしくはフォルダがありません。path=" + file.getAbsolutePath(); + println "螟画鋤蜈医ョ繝代せ縺ォ繝輔ぃ繧、繝ォ繧ゅ@縺上ッ繝輔か繝ォ繝縺後≠繧翫∪縺帙s縲Qath=" + file.getAbsolutePath(); println commandLineMessage; return false; } - // 出力ファイル先にすでにファイルがある場合は処理を中断する。 + // 蜃コ蜉帙ヵ繧。繧、繝ォ蜈医↓縺吶〒縺ォ繝輔ぃ繧、繝ォ縺後≠繧句エ蜷医ッ蜃ヲ逅繧剃クュ譁ュ縺吶k縲 File outputFolder = new File(values[1]); if (outputFolder.exists()) { if (!outputFolder.isDirectory()) { - println "出力先がフォルダではありません。path=" + outputFolder.getAbsolutePath(); + println "蜃コ蜉帛医′繝輔か繝ォ繝縺ァ縺ッ縺ゅj縺セ縺帙s縲Qath=" + outputFolder.getAbsolutePath(); println commandLineMessage; return false; } } - // java ファイルがあるかチェックする。 + // java 繝輔ぃ繧、繝ォ縺後≠繧九°繝√ぉ繝繧ッ縺吶k縲 if (file.isDirectory()) { File[] javaFiles = FileUtil.getFileWithSubFolder(file, new JavaFileFilter()); if (javaFiles == null || javaFiles.length == 0) { - println "変換対象のjavaファイルがありません。"; + println "螟画鋤蟇セ雎。縺ョjava繝輔ぃ繧、繝ォ縺後≠繧翫∪縺帙s縲"; println commandLineMessage; return false; } } else { if (!file.name.endsWith(".java")) { - println "変換対象のファイルはjavaファイルではありません。"; + println "螟画鋤蟇セ雎。縺ョ繝輔ぃ繧、繝ォ縺ッjava繝輔ぃ繧、繝ォ縺ァ縺ッ縺ゅj縺セ縺帙s縲"; println commandLineMessage; return false; } @@ -70,7 +70,7 @@ def checkArgs(String[] values) { return true; } -// 変換先のファイルを指定する。 +// 螟画鋤蟇セ雎。縺ョ繝輔ぃ繧、繝ォ繧呈欠螳壹☆繧九 File target = new File(args[0]); File[] targets; if (target.isDirectory()) { @@ -79,19 +79,20 @@ if (target.isDirectory()) { targets = [target] as File[]; } -// 出力先のフォルダを作成する。 +// 蜃コ蜉帛医ョ繝輔か繝ォ繝繧剃ス懈舌☆繧九 File output = new File(args[1]); output.mkdirs(); for (File targetFile : targets) { permutation(targetFile, output, target); } -println "処理を終了します。"; +println "蜃ヲ逅繧堤オゆコ縺励∪縺吶"; /** - * 対象のファイルを置換し、出力フォルダに出力する。 - * @param file 置換ファイル - * @param outputPath 出力先ファイルパス + * 蟇セ雎。縺ョ繝輔ぃ繧、繝ォ縺ョ繝代ャ繧ア繝シ繧ク謖螳壹r繝輔か繝ォ繝讒区舌↓貅悶§縺ヲ鄂ョ謠帙@縲∝コ蜉帙ヵ繧ゥ繝ォ繝縺ォ蜃コ蜉帙☆繧九 + * @param targetPath 鄂ョ謠帛ッセ雎。繝輔ぃ繧、繝ォ + * @param outputPath 蜃コ蜉帛医ヵ繧。繧、繝ォ繝代せ + * @param rootFolder 鄂ョ謠帛ッセ雎。繝輔ぃ繧、繝ォ縺セ縺溘ッ繝輔か繝ォ繝繝ォ繝シ繝 */ def permutation(File targetPath, File outputPath, File rootFolder) { StringBuilder fileRead = new StringBuilder(); @@ -110,12 +111,13 @@ def permutation(File targetPath, File outputPath, File rootFolder) { System.out.println( ex ); } - // 出力先のパスを取得する + // 蜃コ蜉帛医ョ繝代せ繧貞叙蠕励☆繧 String rootPath = rootFolder.getAbsolutePath(); String targetFilePath = targetPath.getAbsolutePath(); File outputFile; String packageName = ""; - if (targetPath.absolutePath.equals(rootFolder.absolutePath)) + if (targetPath.absolutePath.equals(rootFolder.absolutePath) + || targetPath.getParent().equals(rootFolder.absolutePath)) // 20170317 - 繝輔ぃ繧、繝ォ縺後ヵ繧ゥ繝ォ繝繝ォ繝シ繝医↓鄂ョ縺九l縺溷エ蜷 { String fileName = targetPath.getName(); outputFile = new File(outputPath, fileName); @@ -129,7 +131,7 @@ def permutation(File targetPath, File outputPath, File rootFolder) { } - // 設定ファイルを読み込み、置換を実施する。 + // 險ュ螳壹ヵ繧。繧、繝ォ繧定ェュ縺ソ霎シ縺ソ縲∫スョ謠帙r螳滓命縺吶k縲 String output = fileRead.toString(); String before = "package com\\.example\\.tests;"; String after = ""; @@ -139,14 +141,14 @@ def permutation(File targetPath, File outputPath, File rootFolder) { } output = output.replaceAll(before, after); - // 保存する。 + // 菫晏ュ倥☆繧九 try { if (outputFile.exists()) { - println "出力先にすでにファイルがあるため、上書きします。"; + println "蜃コ蜉帛医↓縺吶〒縺ォ繝輔ぃ繧、繝ォ縺後≠繧九◆繧√∽ク頑嶌縺阪@縺セ縺吶"; boolean isDelete = outputFile.delete(); if (!isDelete) { - println "上書きできません。保存をスキップします。path:" + outputFile.absolutePath; + println "荳頑嶌縺阪〒縺阪∪縺帙s縲ゆソ晏ュ倥r繧ケ繧ュ繝繝励@縺セ縺吶Qath:" + outputFile.absolutePath; return; } } @@ -155,7 +157,7 @@ def permutation(File targetPath, File outputPath, File rootFolder) { OutputStreamWriter filewriter = new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"); filewriter.write(output); filewriter.close(); - println "置換後のファイルを保存しました。 path:" + outputFile.absolutePath; + println "鄂ョ謠帛セ後ョ繝輔ぃ繧、繝ォ繧剃ソ晏ュ倥@縺セ縺励◆縲 path:" + outputFile.absolutePath; } catch ( IOException ex ) { ex.printStackTrace(); } diff --git a/src/main/groovy/SeleniumCodeBuilder.groovy b/src/main/groovy/SeleniumCodeBuilder.groovy index cdcaa7f..c000f09 100644 --- a/src/main/groovy/SeleniumCodeBuilder.groovy +++ b/src/main/groovy/SeleniumCodeBuilder.groovy @@ -12,64 +12,64 @@ */ import org.yaml.snakeyaml.Yaml -// 引数の解析を実施し、実行不可能な引数であれば実行を中断する。 +// 蠑墓焚縺ョ隗」譫舌r螳滓命縺励∝ョ溯。御ク榊庄閭ス縺ェ蠑墓焚縺ァ縺ゅl縺ー螳溯。後r荳ュ譁ュ縺吶k縲 boolean isExecute = checkArgs(args); if (!isExecute) { - println "処理を終了します。"; + println "蜃ヲ逅繧堤オゆコ縺励∪縺吶"; return; } /** - * 引数チェックを行う。 + * 蠑墓焚繝√ぉ繝繧ッ繧定。後≧縲 * */ def checkArgs(String[] values) { - String commandLineMessage = "使用法: groovy -e targetPath(file or directory) outputPath(directory) settingPath"; - // 一つもなければNG + String commandLineMessage = "蠢隕√↑蠑墓焚: targetPath(file or directory) outputPath(directory) settingPath"; + // 荳縺、繧ゅ↑縺代l縺ーNG if (values.size() <= 2) { - println "引数が足りません。"; + println "蠑墓焚縺瑚カウ繧翫∪縺帙s縲"; println commandLineMessage; return false; } - // 第一引数のファイルもしくはフォルダがあるか確認する。 + // 隨ャ荳蠑墓焚縺ョ繝輔ぃ繧、繝ォ繧ゅ@縺上ッ繝輔か繝ォ繝縺後≠繧九°遒コ隱阪☆繧九 String inputPath = values[0]; File file = new File(inputPath); if(file.exists() == false) { - println "変換先のパスにファイルもしくはフォルダがありません。path=" + file.getAbsolutePath(); + println "螟画鋤蜈医ョ繝代せ縺ォ繝輔ぃ繧、繝ォ繧ゅ@縺上ッ繝輔か繝ォ繝縺後≠繧翫∪縺帙s縲Qath=" + file.getAbsolutePath(); println commandLineMessage; return false; } - // 出力ファイル先にすでにファイルがある場合は処理を中断する。 + // 蜃コ蜉帙ヵ繧。繧、繝ォ蜈医↓縺吶〒縺ォ繝輔ぃ繧、繝ォ縺後≠繧句エ蜷医ッ蜃ヲ逅繧剃クュ譁ュ縺吶k縲 File outputFolder = new File(values[1]); if (outputFolder.exists()) { if (!outputFolder.isDirectory()) { - println "出力先がフォルダではありません。path=" + outputFolder.getAbsolutePath(); + println "蜃コ蜉帛医′繝輔か繝ォ繝縺ァ縺ッ縺ゅj縺セ縺帙s縲Qath=" + outputFolder.getAbsolutePath(); println commandLineMessage; return false; } } - // 置換設定ファイルがあるか確認する。 + // 鄂ョ謠幄ィュ螳壹ヵ繧。繧、繝ォ縺後≠繧九°遒コ隱阪☆繧九 File settingYamlPath = new File(values[2]); if (!settingYamlPath.exists()) { - println "設定ファイルが存在しません。 path=" + settingYamlPath.getAbsolutePath(); + println "險ュ螳壹ヵ繧。繧、繝ォ縺悟ュ伜惠縺励∪縺帙s縲 path=" + settingYamlPath.getAbsolutePath(); println commandLineMessage; return false; } - // java ファイルがあるかチェックする。 + // java 繝輔ぃ繧、繝ォ縺後≠繧九°繝√ぉ繝繧ッ縺吶k縲 if (file.isDirectory()) { File[] javaFiles = FileUtil.getFileWithSubFolder(file, new JavaFileFilter()); if (javaFiles == null || javaFiles.length == 0) { - println "変換対象のjavaファイルがありません。"; + println "螟画鋤蟇セ雎。縺ョjava繝輔ぃ繧、繝ォ縺後≠繧翫∪縺帙s縲"; println commandLineMessage; return false; } } else { if (!file.name.endsWith(".java")) { - println "変換対象のファイルはjavaファイルではありません。"; + println "螟画鋤蟇セ雎。縺ョ繝輔ぃ繧、繝ォ縺ッjava繝輔ぃ繧、繝ォ縺ァ縺ッ縺ゅj縺セ縺帙s縲"; println commandLineMessage; return false; } @@ -77,7 +77,7 @@ def checkArgs(String[] values) { return true; } -// 変換先のファイルを指定する。 +// 螟画鋤蟇セ雎。縺ョ繝輔ぃ繧、繝ォ繧呈欠螳壹☆繧九 File target = new File(args[0]); File[] targets; if (target.isDirectory()) { @@ -88,18 +88,20 @@ if (target.isDirectory()) { File settingYamlFile = new File(args[2]); -// 出力先のフォルダを作成する。 +// 蜃コ蜉帛医ョ繝輔か繝ォ繝繧剃ス懈舌☆繧九 File output = new File(args[1]); output.mkdirs(); for (File targetFile : targets) { permutation(targetFile, output, settingYamlFile, target); } -println "処理を終了します。"; +println "蜃ヲ逅繧堤オゆコ縺励∪縺吶"; /** - * 対象のファイルを置換し、出力フォルダに出力する。 - * @param file 置換ファイル - * @param outputPath 出力先ファイルパス + * 蟇セ雎。縺ョ繝輔ぃ繧、繝ォ繧堤スョ謠帙@縲∝コ蜉帙ヵ繧ゥ繝ォ繝縺ォ蜃コ蜉帙☆繧九 + * @param targetPath 鄂ョ謠帛ッセ雎。繝輔ぃ繧、繝ォ + * @param outputPath 蜃コ蜉帛医ヵ繧ゥ繝ォ繝繝代せ + * @param settingPath 鄂ョ謠幄ィュ螳壹ヵ繧。繧、繝ォ繝代せ + * @param rootFolder 鄂ョ謠帛ッセ雎。繝輔ぃ繧、繝ォ縺セ縺溘ッ繝輔か繝ォ繝繝ォ繝シ繝 */ def permutation(File targetPath, File outputPath, File settingPath, File rootFolder) { StringBuilder fileRead = new StringBuilder(); @@ -118,12 +120,12 @@ def permutation(File targetPath, File outputPath, File settingPath, File rootFol System.out.println( ex ); } - // 設定ファイルを読み込み、置換を実施する。 - InputStreamReader reader = new InputStreamReader(new FileInputStream(settingPath)); + // 險ュ螳壹ヵ繧。繧、繝ォ繧定ェュ縺ソ霎シ縺ソ縲∫スョ謠帙r螳滓命縺吶k縲 20170317 - 險ュ螳壹ヵ繧。繧、繝ォ繧置tf8縺ォ螟画峩縲 + InputStreamReader reader = new InputStreamReader(new FileInputStream(settingPath), "UTF-8"); Yaml yaml = new Yaml(); Object object = yaml.load(reader); if (!(object instanceof List)) { - println "設定ファイルの書式が間違っています。"; + println "險ュ螳壹ヵ繧。繧、繝ォ縺ョ譖ク蠑上′髢馴&縺」縺ヲ縺縺セ縺吶"; return; } String output = fileRead.toString(); @@ -141,7 +143,7 @@ def permutation(File targetPath, File outputPath, File settingPath, File rootFol output = output.replaceAll(before, after); } - // 保存する。 + // 菫晏ュ倥☆繧九 try { String rootPath = rootFolder.getAbsolutePath(); String targetFilePath = targetPath.getAbsolutePath(); @@ -156,12 +158,15 @@ def permutation(File targetPath, File outputPath, File settingPath, File rootFol String fileName = targetFilePath.substring(rootPath.length() + 1); outputFile = new File(outputPath, fileName); } + // 20170317 - 繝輔ぃ繧、繝ォ蜷阪ョ蜈磯ュ譁蟄励r螟ァ譁蟄励↓繧貞ー乗枚蟄励↓譖ク縺肴鋤縺 + String s = outputFile.getName() + outputFile = new File(outputFile.getParent(), Character.toUpperCase(s.charAt(0)).toString() + s.substring(1)); if (outputFile.exists()) { - println "出力先にすでにファイルがあるため、上書きします。"; + println "蜃コ蜉帛医↓縺吶〒縺ォ繝輔ぃ繧、繝ォ縺後≠繧九◆繧√∽ク頑嶌縺阪@縺セ縺吶"; boolean isDelete = outputFile.delete(); if (!isDelete) { - println "上書きできません。保存をスキップします。path:" + outputFile.absolutePath; + println "荳頑嶌縺阪〒縺阪∪縺帙s縲ゆソ晏ュ倥r繧ケ繧ュ繝繝励@縺セ縺吶Qath:" + outputFile.absolutePath; return; } } @@ -170,7 +175,7 @@ def permutation(File targetPath, File outputPath, File settingPath, File rootFol OutputStreamWriter filewriter = new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"); filewriter.write(output); filewriter.close(); - println "置換後のファイルを保存しました。 path:" + outputFile.absolutePath; + println "鄂ョ謠帛セ後ョ繝輔ぃ繧、繝ォ繧剃ソ晏ュ倥@縺セ縺励◆縲 path:" + outputFile.absolutePath; } catch ( IOException ex ) { ex.printStackTrace(); } diff --git a/src/main/groovy/SeparatorBuilder.groovy b/src/main/groovy/SeparatorBuilder.groovy index a3aab28..98d5160 100644 --- a/src/main/groovy/SeparatorBuilder.groovy +++ b/src/main/groovy/SeparatorBuilder.groovy @@ -12,7 +12,7 @@ */ /** - * 改行コードを生成するためのクラス。 + * 謾ケ陦後さ繝シ繝峨r逕滓舌☆繧九◆繧√ョ繧ッ繝ゥ繧ケ縲 * */ class SeparatorBuilder { @@ -24,11 +24,11 @@ class SeparatorBuilder { /** line feed code(0x0A(10)). */ private static final char LF = '\n'; - /** 改行の種類を保持する。 */ + /** 謾ケ陦後ョ遞ョ鬘槭r菫晄戟縺吶k縲 */ private Separator separator = null; /** - * デフォルトコンストラクタ + * 繝繝輔か繝ォ繝医さ繝ウ繧ケ繝医Λ繧ッ繧ソ */ public SeparatorBuilder() { } @@ -56,8 +56,8 @@ class SeparatorBuilder { } /** - * 改行コードを取得する。 - * @return 改行コード + * 謾ケ陦後さ繝シ繝峨r蜿門セ励☆繧九 + * @return 謾ケ陦後さ繝シ繝 */ public String getSeparatorCode () { if (this.separator == Separator.CR_LF) {