From b2baffe3ff85a211f585dd08a26526fec7cd2d5c Mon Sep 17 00:00:00 2001 From: tatsuakimitani Date: Wed, 22 Mar 2017 10:31:04 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E3=82=A8=E3=83=B3=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=87=E3=82=A3=E3=83=B3=E3=82=B0=E3=82=92UTF-8=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=8F=9B=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/groovy/FileUtil.groovy | 2 +- src/main/groovy/JavaFileFilter.groovy | 2 +- src/main/groovy/PackageModifier.groovy | 54 ++++++++++--------- src/main/groovy/SeleniumCodeBuilder.groovy | 61 ++++++++++++---------- src/main/groovy/SeparatorBuilder.groovy | 10 ++-- 5 files changed, 68 insertions(+), 61 deletions(-) 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; /** - * ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€ŠÖ˜A‚̃†[ƒeƒBƒŠƒeƒBƒNƒ‰ƒXB + * ファイルシステム関連ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã€‚ * */ 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ƒtƒ@ƒCƒ‹‚̃tƒBƒ‹ƒ^ƒŠƒ“ƒO‚Ì‚½‚߂̃Nƒ‰ƒXB + * Javaファイルã®ãƒ•ィルタリングã®ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã€‚ * */ 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; -// ‘Îۂ̃tƒ@ƒCƒ‹‚ÉRootƒtƒHƒ‹ƒ_‚©‚ç‚̃pƒbƒP[ƒW‚ð’ljÁ‚·‚éB +// 対象ã®ãƒ•ァイルã«Rootフォルダã‹ã‚‰ã®ãƒ‘ッケージを追加ã™ã‚‹ã€‚ boolean isExecute = checkArgs(args); if (!isExecute) { - println "ˆ—‚ðI—¹‚µ‚Ü‚·B"; + println "処ç†ã‚’終了ã—ã¾ã™ã€‚"; return; } /** - * ˆø”ƒ`ƒFƒbƒN‚ðs‚¤B + * 引数ãƒã‚§ãƒƒã‚¯ã‚’行ã†ã€‚ * */ def checkArgs(String[] values) { - String commandLineMessage = "Žg—p–@: groovy -e targetPath(file or directory) outputPath(directory) settingPath"; - // ˆê‚‚à‚È‚¯‚ê‚ÎNG + String commandLineMessage = "å¿…è¦ãªå¼•æ•°: targetPath(file or directory) outputPath(directory)"; + // 一ã¤ã‚‚ãªã‘れã°NG if (values.size() <= 1) { - println "ˆø”‚ª‘«‚è‚Ü‚¹‚ñB"; + println "引数ãŒè¶³ã‚Šã¾ã›ã‚“。"; println commandLineMessage; return false; } - // ‘æˆêˆø”‚̃tƒ@ƒCƒ‹‚à‚µ‚­‚̓tƒHƒ‹ƒ_‚ª‚ ‚é‚©Šm”F‚·‚éB + // 第一引数ã®ãƒ•ァイルもã—ãã¯ãƒ•ォルダãŒã‚ã‚‹ã‹ç¢ºèªã™ã‚‹ã€‚ String inputPath = values[0]; File file = new File(inputPath); if(file.exists() == false) { - println "•ÏŠ·æ‚̃pƒX‚Ƀtƒ@ƒCƒ‹‚à‚µ‚­‚̓tƒHƒ‹ƒ_‚ª‚ ‚è‚Ü‚¹‚ñBpath=" + file.getAbsolutePath(); + println "変æ›å…ˆã®ãƒ‘スã«ãƒ•ァイルもã—ãã¯ãƒ•ォルダãŒã‚りã¾ã›ã‚“。path=" + file.getAbsolutePath(); println commandLineMessage; return false; } - // o—̓tƒ@ƒCƒ‹æ‚É‚·‚łɃtƒ@ƒCƒ‹‚ª‚ ‚éꇂ͈—‚ð’†’f‚·‚éB + // 出力ファイル先ã«ã™ã§ã«ãƒ•ァイルãŒã‚ã‚‹å ´åˆã¯å‡¦ç†ã‚’中断ã™ã‚‹ã€‚ File outputFolder = new File(values[1]); if (outputFolder.exists()) { if (!outputFolder.isDirectory()) { - println "o—Íæ‚ªƒtƒHƒ‹ƒ_‚ł͂ ‚è‚Ü‚¹‚ñBpath=" + outputFolder.getAbsolutePath(); + println "出力先ãŒãƒ•ォルダã§ã¯ã‚りã¾ã›ã‚“。path=" + outputFolder.getAbsolutePath(); println commandLineMessage; return false; } } - // java ƒtƒ@ƒCƒ‹‚ª‚ ‚é‚©ƒ`ƒFƒbƒN‚·‚éB + // java ファイルãŒã‚ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã€‚ if (file.isDirectory()) { File[] javaFiles = FileUtil.getFileWithSubFolder(file, new JavaFileFilter()); if (javaFiles == null || javaFiles.length == 0) { - println "•ÏŠ·‘ÎÛ‚Ìjavaƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB"; + println "変æ›å¯¾è±¡ã®javaファイルãŒã‚りã¾ã›ã‚“。"; println commandLineMessage; return false; } } else { if (!file.name.endsWith(".java")) { - println "•ÏŠ·‘Îۂ̃tƒ@ƒCƒ‹‚Íjavaƒtƒ@ƒCƒ‹‚ł͂ ‚è‚Ü‚¹‚ñB"; + println "変æ›å¯¾è±¡ã®ãƒ•ァイルã¯javaファイルã§ã¯ã‚りã¾ã›ã‚“。"; println commandLineMessage; return false; } @@ -70,7 +70,7 @@ def checkArgs(String[] values) { return true; } -// •ÏŠ·æ‚̃tƒ@ƒCƒ‹‚ðŽw’è‚·‚éB +// 変æ›å¯¾è±¡ã®ãƒ•ァイルを指定ã™ã‚‹ã€‚ File target = new File(args[0]); File[] targets; if (target.isDirectory()) { @@ -79,19 +79,20 @@ if (target.isDirectory()) { targets = [target] as File[]; } -// o—Íæ‚̃tƒHƒ‹ƒ_‚ð쬂·‚éB +// 出力先ã®ãƒ•ォルダを作æˆã™ã‚‹ã€‚ File output = new File(args[1]); output.mkdirs(); for (File targetFile : targets) { permutation(targetFile, output, target); } -println "ˆ—‚ðI—¹‚µ‚Ü‚·B"; +println "処ç†ã‚’終了ã—ã¾ã™ã€‚"; /** - * ‘Îۂ̃tƒ@ƒCƒ‹‚ð’uŠ·‚µAo—̓tƒHƒ‹ƒ_‚Éo—Í‚·‚éB - * @param file ’uŠ·ƒtƒ@ƒCƒ‹ - * @param outputPath o—Íæƒtƒ@ƒCƒ‹ƒpƒX + * 対象ã®ãƒ•ァイルã®ãƒ‘ッケージ指定をフォルダ構æˆã«æº–ã˜ã¦ç½®æ›ã—ã€å‡ºåŠ›ãƒ•ã‚©ãƒ«ãƒ€ã«å‡ºåŠ›ã™ã‚‹ã€‚ + * @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 ); } - // o—Íæ‚̃pƒX‚ðŽæ“¾‚·‚é + // 出力先ã®ãƒ‘スをå–å¾—ã™ã‚‹ 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 - ファイルãŒãƒ•ォルダルートã«ç½®ã‹ã‚ŒãŸå ´åˆ { String fileName = targetPath.getName(); outputFile = new File(outputPath, fileName); @@ -129,7 +131,7 @@ def permutation(File targetPath, File outputPath, File rootFolder) { } - // Ý’èƒtƒ@ƒCƒ‹‚ð“ǂݞ‚ÝA’uŠ·‚ðŽÀŽ{‚·‚éB + // 設定ファイルを読ã¿è¾¼ã¿ã€ç½®æ›ã‚’実施ã™ã‚‹ã€‚ 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); - // •Û‘¶‚·‚éB + // ä¿å­˜ã™ã‚‹ã€‚ try { if (outputFile.exists()) { - println "o—Íæ‚É‚·‚łɃtƒ@ƒCƒ‹‚ª‚ ‚邽‚ßAã‘‚«‚µ‚Ü‚·B"; + println "出力先ã«ã™ã§ã«ãƒ•ァイルãŒã‚ã‚‹ãŸã‚ã€ä¸Šæ›¸ãã—ã¾ã™ã€‚"; boolean isDelete = outputFile.delete(); if (!isDelete) { - println "ã‘‚«‚Å‚«‚Ü‚¹‚ñB•Û‘¶‚ðƒXƒLƒbƒv‚µ‚Ü‚·Bpath:" + outputFile.absolutePath; + println "上書ãã§ãã¾ã›ã‚“。ä¿å­˜ã‚’スキップã—ã¾ã™ã€‚path:" + 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 "’uŠ·Œã‚̃tƒ@ƒCƒ‹‚ð•Û‘¶‚µ‚Ü‚µ‚½B 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 -// ˆø”‚̉ðÍ‚ðŽÀŽ{‚µAŽÀs•s‰Â”\‚Ȉø”‚Å‚ ‚ê‚ÎŽÀs‚ð’†’f‚·‚éB +// 引数ã®è§£æžã‚’実施ã—ã€å®Ÿè¡Œä¸å¯èƒ½ãªå¼•æ•°ã§ã‚れã°å®Ÿè¡Œã‚’中断ã™ã‚‹ã€‚ boolean isExecute = checkArgs(args); if (!isExecute) { - println "ˆ—‚ðI—¹‚µ‚Ü‚·B"; + println "処ç†ã‚’終了ã—ã¾ã™ã€‚"; return; } /** - * ˆø”ƒ`ƒFƒbƒN‚ðs‚¤B + * 引数ãƒã‚§ãƒƒã‚¯ã‚’行ã†ã€‚ * */ def checkArgs(String[] values) { - String commandLineMessage = "Žg—p–@: groovy -e targetPath(file or directory) outputPath(directory) settingPath"; - // ˆê‚‚à‚È‚¯‚ê‚ÎNG + String commandLineMessage = "å¿…è¦ãªå¼•æ•°: targetPath(file or directory) outputPath(directory) settingPath"; + // 一ã¤ã‚‚ãªã‘れã°NG if (values.size() <= 2) { - println "ˆø”‚ª‘«‚è‚Ü‚¹‚ñB"; + println "引数ãŒè¶³ã‚Šã¾ã›ã‚“。"; println commandLineMessage; return false; } - // ‘æˆêˆø”‚̃tƒ@ƒCƒ‹‚à‚µ‚­‚̓tƒHƒ‹ƒ_‚ª‚ ‚é‚©Šm”F‚·‚éB + // 第一引数ã®ãƒ•ァイルもã—ãã¯ãƒ•ォルダãŒã‚ã‚‹ã‹ç¢ºèªã™ã‚‹ã€‚ String inputPath = values[0]; File file = new File(inputPath); if(file.exists() == false) { - println "•ÏŠ·æ‚̃pƒX‚Ƀtƒ@ƒCƒ‹‚à‚µ‚­‚̓tƒHƒ‹ƒ_‚ª‚ ‚è‚Ü‚¹‚ñBpath=" + file.getAbsolutePath(); + println "変æ›å…ˆã®ãƒ‘スã«ãƒ•ァイルもã—ãã¯ãƒ•ォルダãŒã‚りã¾ã›ã‚“。path=" + file.getAbsolutePath(); println commandLineMessage; return false; } - // o—̓tƒ@ƒCƒ‹æ‚É‚·‚łɃtƒ@ƒCƒ‹‚ª‚ ‚éꇂ͈—‚ð’†’f‚·‚éB + // 出力ファイル先ã«ã™ã§ã«ãƒ•ァイルãŒã‚ã‚‹å ´åˆã¯å‡¦ç†ã‚’中断ã™ã‚‹ã€‚ File outputFolder = new File(values[1]); if (outputFolder.exists()) { if (!outputFolder.isDirectory()) { - println "o—Íæ‚ªƒtƒHƒ‹ƒ_‚ł͂ ‚è‚Ü‚¹‚ñBpath=" + outputFolder.getAbsolutePath(); + println "出力先ãŒãƒ•ォルダã§ã¯ã‚りã¾ã›ã‚“。path=" + outputFolder.getAbsolutePath(); println commandLineMessage; return false; } } - // ’uŠ·Ý’èƒtƒ@ƒCƒ‹‚ª‚ ‚é‚©Šm”F‚·‚éB + // ç½®æ›è¨­å®šãƒ•ァイルãŒã‚ã‚‹ã‹ç¢ºèªã™ã‚‹ã€‚ File settingYamlPath = new File(values[2]); if (!settingYamlPath.exists()) { - println "Ý’èƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚Ü‚¹‚ñB path=" + settingYamlPath.getAbsolutePath(); + println "設定ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“。 path=" + settingYamlPath.getAbsolutePath(); println commandLineMessage; return false; } - // java ƒtƒ@ƒCƒ‹‚ª‚ ‚é‚©ƒ`ƒFƒbƒN‚·‚éB + // java ファイルãŒã‚ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã€‚ if (file.isDirectory()) { File[] javaFiles = FileUtil.getFileWithSubFolder(file, new JavaFileFilter()); if (javaFiles == null || javaFiles.length == 0) { - println "•ÏŠ·‘ÎÛ‚Ìjavaƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB"; + println "変æ›å¯¾è±¡ã®javaファイルãŒã‚りã¾ã›ã‚“。"; println commandLineMessage; return false; } } else { if (!file.name.endsWith(".java")) { - println "•ÏŠ·‘Îۂ̃tƒ@ƒCƒ‹‚Íjavaƒtƒ@ƒCƒ‹‚ł͂ ‚è‚Ü‚¹‚ñB"; + println "変æ›å¯¾è±¡ã®ãƒ•ァイルã¯javaファイルã§ã¯ã‚りã¾ã›ã‚“。"; println commandLineMessage; return false; } @@ -77,7 +77,7 @@ def checkArgs(String[] values) { return true; } -// •ÏŠ·æ‚̃tƒ@ƒCƒ‹‚ðŽw’è‚·‚éB +// 変æ›å¯¾è±¡ã®ãƒ•ァイルを指定ã™ã‚‹ã€‚ File target = new File(args[0]); File[] targets; if (target.isDirectory()) { @@ -88,18 +88,20 @@ if (target.isDirectory()) { File settingYamlFile = new File(args[2]); -// o—Íæ‚̃tƒHƒ‹ƒ_‚ð쬂·‚éB +// 出力先ã®ãƒ•ォルダを作æˆã™ã‚‹ã€‚ File output = new File(args[1]); output.mkdirs(); for (File targetFile : targets) { permutation(targetFile, output, settingYamlFile, target); } -println "ˆ—‚ðI—¹‚µ‚Ü‚·B"; +println "処ç†ã‚’終了ã—ã¾ã™ã€‚"; /** - * ‘Îۂ̃tƒ@ƒCƒ‹‚ð’uŠ·‚µAo—̓tƒHƒ‹ƒ_‚Éo—Í‚·‚éB - * @param file ’uŠ·ƒtƒ@ƒCƒ‹ - * @param outputPath o—Íæƒtƒ@ƒCƒ‹ƒpƒX + * 対象ã®ãƒ•ァイルを置æ›ã—ã€å‡ºåŠ›ãƒ•ã‚©ãƒ«ãƒ€ã«å‡ºåŠ›ã™ã‚‹ã€‚ + * @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 ); } - // Ý’èƒtƒ@ƒCƒ‹‚ð“ǂݞ‚ÝA’uŠ·‚ðŽÀŽ{‚·‚éB - InputStreamReader reader = new InputStreamReader(new FileInputStream(settingPath)); + // 設定ファイルを読ã¿è¾¼ã¿ã€ç½®æ›ã‚’実施ã™ã‚‹ã€‚ 20170317 - 設定ファイルをutf8ã«å¤‰æ›´ã€‚ + InputStreamReader reader = new InputStreamReader(new FileInputStream(settingPath), "UTF-8"); Yaml yaml = new Yaml(); Object object = yaml.load(reader); if (!(object instanceof List)) { - println "Ý’èƒtƒ@ƒCƒ‹‚Ì‘Ž®‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·B"; + 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); } - // •Û‘¶‚·‚éB + // ä¿å­˜ã™ã‚‹ã€‚ 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 - ファイルåã®å…ˆé ­æ–‡å­—を大文字ã«ã‚’å°æ–‡å­—ã«æ›¸ãæ›ãˆ + String s = outputFile.getName() + outputFile = new File(outputFile.getParent(), Character.toUpperCase(s.charAt(0)).toString() + s.substring(1)); if (outputFile.exists()) { - println "o—Íæ‚É‚·‚łɃtƒ@ƒCƒ‹‚ª‚ ‚邽‚ßAã‘‚«‚µ‚Ü‚·B"; + println "出力先ã«ã™ã§ã«ãƒ•ァイルãŒã‚ã‚‹ãŸã‚ã€ä¸Šæ›¸ãã—ã¾ã™ã€‚"; boolean isDelete = outputFile.delete(); if (!isDelete) { - println "ã‘‚«‚Å‚«‚Ü‚¹‚ñB•Û‘¶‚ðƒXƒLƒbƒv‚µ‚Ü‚·Bpath:" + outputFile.absolutePath; + println "上書ãã§ãã¾ã›ã‚“。ä¿å­˜ã‚’スキップã—ã¾ã™ã€‚path:" + 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 "’uŠ·Œã‚̃tƒ@ƒCƒ‹‚ð•Û‘¶‚µ‚Ü‚µ‚½B 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 @@ */ /** - * ‰üsƒR[ƒh‚𶬂·‚邽‚߂̃Nƒ‰ƒXB + * 改行コードを生æˆã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã€‚ * */ class SeparatorBuilder { @@ -24,11 +24,11 @@ class SeparatorBuilder { /** line feed code(0x0A(10)). */ private static final char LF = '\n'; - /** ‰üs‚ÌŽí—Þ‚ð•ÛŽ‚·‚éB */ + /** 改行ã®ç¨®é¡žã‚’ä¿æŒã™ã‚‹ã€‚ */ private Separator separator = null; /** - * ƒfƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^ + * デフォルトコンストラクタ */ public SeparatorBuilder() { } @@ -56,8 +56,8 @@ class SeparatorBuilder { } /** - * ‰üsƒR[ƒh‚ðŽæ“¾‚·‚éB - * @return ‰üsƒR[ƒh + * 改行コードをå–å¾—ã™ã‚‹ã€‚ + * @return 改行コード */ public String getSeparatorCode () { if (this.separator == Separator.CR_LF) { From 5be0235deb237fae459fbbe678d550bea2e6c7e7 Mon Sep 17 00:00:00 2001 From: tatsuakimitani Date: Wed, 22 Mar 2017 10:32:55 +0900 Subject: [PATCH 2/5] Add code convert definitions. --- setting.yaml | 266 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 200 insertions(+), 66 deletions(-) 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 •ÏŠ·Ý’èƒtƒ@ƒCƒ‹ +# Selenium Code Converter 変æ›è¨­å®šãƒ•ァイル # version: 0.5.0 # memo: -# * uafter : |2v‚ÌŽw’è‚ÍA’uŠ·æ‚ª•¡”s‚ŃCƒ“ƒfƒ“ƒg‚ª 2 ‚Å‚ ‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·BÚׂÍyamlŽd—l‚ðŽQÆ‚­‚¾‚³‚¢B +# * 「after : |2ã€ã®æŒ‡å®šã¯ã€ç½®æ›å…ˆãŒè¤‡æ•°è¡Œã§ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆãŒ 2 ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚詳細ã¯yaml仕様をå‚ç…§ãã ã•ã„。 # #======================================================== # #------------------------------------------------------------------------------ -# Import ’è‹`‚̒ljÁ +# 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 { - /** ƒLƒƒƒvƒ`ƒƒƒtƒ@ƒCƒ‹–¼––”ö‚Ƀuƒ‰ƒEƒU–¼‚ð’ljÁ */ - private boolean captureFileWithBrowserName = false; - /** ƒeƒXƒg‘Îۂ̃uƒ‰ƒEƒU */ + /** テスト対象ã®ãƒ–ラウザ */ private String browser; - /** ‰æ‘œƒtƒ@ƒCƒ‹‚̕ۑ¶ƒfƒBƒŒƒNƒgƒŠ */ + /** ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルã®ä¿å­˜ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª */ private String captureDirectory; - + /** ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルåã«ã‚¯ãƒ©ã‚¹åを追加 */ + private boolean addClassNameToCaptureFile = false; + /** ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルåã«é€£ç•ªã‚’追加 */ + private boolean addSeqNoToCaptureFile = false; + /** ç”»åƒã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルã®é€£ç•ª */ + private int captureSeqNo = 0; + /** ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ã‚¡ã‚¤ãƒ«åæœ«å°¾ã«ãƒ–ラウザåを追加 */ + private boolean captureFileWithBrowserName = false; + #------------------------------------------------------------------------------ -# ƒhƒ‰ƒCƒo’è‹`‚̒ljÁ +# ドライãƒå®šç¾©ã®è¿½åŠ  #------------------------------------------------------------------------------ -- before : '([^\S\x0a\x0d]*)driver = new FirefoxDriver\(\);' +- before : '\n([^\S\x0a\x0d]*)driver = new FirefoxDriver\(\);' after : |2 - $1//SCB: ˆÈ‰º‚ðƒRƒƒ“ƒgƒCƒ“/ƒRƒƒ“ƒgƒAƒEƒg‚µ‚ăuƒ‰ƒEƒU‚ðŽw’肵‚Ü‚·B + + $1//SCC: 以下をコメントイン/コメントアウトã—ã¦ãƒ–ラウザを指定ã—ã¾ã™ã€‚ $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‚ł̃uƒ‰ƒEƒUŽw’肪‚ ‚ê‚΂»‚¿‚ç‚ð—D悵‚Ü‚·B + $1// SCC: propertyã§ã®ãƒ–ラウザ指定ãŒã‚れã°ãã¡ã‚‰ã‚’優先ã—ã¾ã™ã€‚ $1String propBrowser = System.getProperty("browser"); $1if (propBrowser != null){ $1 browser = propBrowser; $1} - $1captureDirectory = System.getProperty("capturedirectory"); - $1if (captureDirectory == null){ + $1captureDirectory = System.getProperty("capturedirectory"); // SCC: ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルã®ä¿å­˜å ´æ‰€ã®ãƒ—ロパティ指定をå–得。 + $1if (captureDirectory == null){ // SCC: 指定ãŒãªã„å ´åˆã¯ãƒ—ロジェクトルートã«ä¿å­˜ã—ã¾ã™ã€‚ $1 captureDirectory = "."; $1} + + $1addClassNameToCaptureFile = true; // SCC: ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルåã«ã‚¯ãƒ©ã‚¹åを追加。 + $1String propClassname2capfile = System.getProperty("classname2capfile"); // SCC: プロパティ指定ãŒã‚れã°ãã¡ã‚‰ã‚’優先ã—ã¾ã™ã€‚ + $1if (propClassname2capfile != null){ + $1 addClassNameToCaptureFile = Boolean.parseBoolean(propClassname2capfile); + $1} + + $1addSeqNoToCaptureFile = true; // SCC: ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルåã«é€£ç•ªã‚’追加。 + $1String propSeqno2capfile = System.getProperty("seqno2capfile"); // SCC: プロパティ指定ãŒã‚れã°ãã¡ã‚‰ã‚’優先ã—ã¾ã™ã€‚ + $1if (propSeqno2capfile != null){ + $1 addSeqNoToCaptureFile = Boolean.parseBoolean(propSeqno2capfile); + $1} + + $1captureFileWithBrowserName = false; // SCC: ç”»é¢ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ•ァイルåã®æœ«å°¾ã«ãƒ–ラウザåを追加ã—ãªã„。 + $1String propBrowsername2capfile = System.getProperty("browsername2capfile"); // SCC: プロパティ指定ãŒã‚れã°ãã¡ã‚‰ã‚’優先ã—ã¾ã™ã€‚ + $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 ‚ð쬂µ‚Ü‚·B + $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ãƒˆãƒƒãƒ—ã«æˆ»ã£ã¦ã‹ã‚‰ã€æ¬¡ãƒ¬ãƒ™ãƒ« フレームã¸ã®ç§»å‹•を想定。 + $1driver.switchTo().frame($2); // SCC: フレームãƒã‚¹ãƒˆãŒæ·±ã„å ´åˆã¯è¦èª¿æ•´ã€‚ +#------------------------------------------------------------------------------ +# 未対応コマンド : selectFrame +#------------------------------------------------------------------------------ +- before : '\n([^\S\x0a\x0d]*)// ERROR: Caught exception \[ERROR: Unsupported command \[selectFrame \| ([^=]+?) \| \]\]' + after : |2 - $1captureFileWithBrowserName=true; // SCB: ‰æ–ʃLƒƒƒvƒ`ƒƒƒtƒ@ƒCƒ‹–¼‚Ì––”ö‚Ƀuƒ‰ƒEƒU–¼‚ð’Ç‹L‚µ‚Ü‚·B + $1driver.switchTo().defaultContent(); // SCC: Experimental. Frameãƒˆãƒƒãƒ—ã«æˆ»ã£ã¦ã‹ã‚‰ã€æ¬¡ãƒ¬ãƒ™ãƒ« フレームã¸ã®ç§»å‹•を想定。 + $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ã¨ã—ã¦è¨˜éŒ²ã•れãŸã€‚ + $1 driver.switchTo().frame("$2"); // SCC: フレームãƒã‚¹ãƒˆãŒæ·±ã„å ´åˆã¯è¦èª¿æ•´ã€‚ + $1} #------------------------------------------------------------------------------ -# ƒhƒ‰ƒCƒoÝ’è +# 未対応コマンド : 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: ƒuƒ‰ƒEƒUƒTƒCƒYÝ’èB - //driver.manage().window().maximize(); // SCB: ƒuƒ‰ƒEƒU‚ðő剻‚·‚éê‡B + + $1driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString()); // SCC: Experimental. [0]ã¯å¿…è¦ã«å¿œã˜ã¦èª¿æ•´ã€‚ #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : 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ƒgƒbƒv‚É–ß‚éB -- 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ƒgƒbƒv‚É–ß‚Á‚Ä‚©‚çAŽŸƒŒƒxƒ‹ ƒtƒŒ[ƒ€‚ւ̈ړ®‚ð‘z’èB - $1driver.switchTo().frame("$2"); // SCB: ƒtƒŒ[ƒ€ƒlƒXƒg‚ª[‚¢ê‡‚Í—v’²®B + + $1((JavascriptExecutor) driver).executeScript("window.open('$2','$3')"); // SCC: Experimental. #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : 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‚ÅoŒ»‚µAExportŽž‚ÉUnsupported command‚ƂȂÁ‚½B - $1driver.switchTo().frame("$2"); // SCB: ƒtƒŒ[ƒ€ƒlƒXƒg‚ª[‚¢ê‡‚Í—v’²®B + + $1((JavascriptExecutor) driver).executeScript("window.open('" + baseUrl + "$2" + "','$3')"); // SCC: Experimental. #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : ƒLƒƒƒvƒ`ƒƒ +# 未対応コマンド : キャプãƒãƒ£ #------------------------------------------------------------------------------ -- 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} #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : Dom locators -# Selenium IDE Options > ƒtƒH[ƒ}ƒbƒg > Java/JUnit4/WebDriver‚É‚Ä Show Selenese ƒIƒ“‚ŃGƒNƒXƒ|[ƒg‚µ‚½ê‡ +# 未対応コマンド : 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 コマンドã‹ã‚‰ç½®æ›ã€‚ + #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : StoreEval Žb’èƒRƒƒ“ƒgƒAƒEƒg‘Ήž +# 未対応コマンド : 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 ’è‹`‚ɂĎb’èƒRƒƒ“ƒgƒAƒEƒg•¶Žš—ñu//\\-v‚ðŒŸo‚µ‚½‚Ì‚ÅAƒRƒƒ“ƒgƒAƒEƒg‚ð‰ðœ‚µ‚Ü‚µ‚½B + + $1((JavascriptExecutor) driver).executeScript("$2"); // IDE 上ã§ã® js 定義ã«ã¦æš«å®šã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆæ–‡å­—列「//\\-ã€ã‚’検出ã—ãŸã®ã§ã€ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã‚’解除ã—ã¾ã—ãŸã€‚ #------------------------------------------------------------------------------ -# –¢‘ΉžƒRƒ}ƒ“ƒh : 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); +#--- è¦ç´ æ¯Žã«å¾®èª¿æ•´ãŒå¿…è¦ãªå ´åˆã¯ã€ä¸Šè¨˜ã‚’コメント化ã—ã¦ä»¥ä¸‹ã‚’使用ã—ã¦ãã ã•ã„。 +# $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: 安定化調整 #------------------------------------------------------------------------------ -# ƒuƒ‰ƒEƒUI—¹ +# ブラウザ終了 #------------------------------------------------------------------------------ -- before : ' driver.quit\(\);' +- before : '\n([^\S\x0a\x0d]*)driver.quit\(\);' after : |2 - //Thread.sleep(1500); // SCB: –ÚŽ‹Šm”F—p - driver.quit\(\); + + $1driver.quit\(\); #------------------------------------------------------------------------------ -# ƒwƒ‹ƒp[ŠÖ”’è‹`‚̒ljÁ +# ヘルパー関数定義ã®è¿½åŠ  #------------------------------------------------------------------------------ - before : '(}\s$)' after : |2 /** - * ‰æ–ʃLƒƒƒvƒ`ƒƒ‚ðŽw’èƒtƒ@ƒCƒ‹–¼‚ŕۑ¶‚·‚éB + * ç”»é¢è¦ç´ ã‚’クリックã™ã‚‹ã€‚ + * + * @param element ç”»é¢è¦ç´  + */ + public void click(WebElement element) throws Exception + { + element.sendKeys(Keys.CONTROL); // SCC: 安定化調整 + Thread.sleep(500); // SCC: 安定化調整 + element.click(); + } + + /** + * ç”»é¢è¦ç´ ã‚’見ã¤ã‘ã¦ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹ã€‚ * - * @param fileName •Û‘¶ƒtƒ@ƒCƒ‹–¼ + * @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: ブラウザåを追加ã—ã¾ã™ã€‚ 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: クラスåを追加ã—ã¾ã™ã€‚ + String classNm = this.getClass().getSimpleName(); + newFileName = classNm + '_' + newFileName; + } capture(driver, Paths.get(captureDirectory), newFileName); } @@ -202,10 +324,10 @@ } /** - * ˆø”‚ÉŽw’肳‚ꂽ webdriver ‚ð쬂·‚éB + * å¼•æ•°ã«æŒ‡å®šã•れ㟠webdriver を作æˆã™ã‚‹ã€‚ * - * @param browserName ƒuƒ‰ƒEƒU–¼ - * @return WebDriverƒIƒuƒWƒFƒNƒg + * @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"); From 72a4ccec0227161295ed422bb580840466c2f786 Mon Sep 17 00:00:00 2001 From: tatsuakimitani Date: Wed, 22 Mar 2017 10:34:50 +0900 Subject: [PATCH 3/5] Modify compile and execute command for UTF-8 --- convert.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/convert.bat b/convert.bat index 21c95f0..6752338 100644 --- a/convert.bat +++ b/convert.bat @@ -24,12 +24,12 @@ cd %~dp0\src\main\groovy echo ------------------------------------------ echo --- ’uŠ·ˆ—‚ðŽÀŽ{‚µ‚Ü‚·... 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 --- ƒpƒbƒP[ƒWŠK‘w‚ðݒ肵‚Ü‚·... 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 --- ˆø”•t‚«‚Å–{ƒoƒbƒ`‚ª‹N“®‚³‚ꂽꇂÍApause‚ðs‚¢‚Ü‚¹‚ñB @if "%1"=="" ( From 3f97c21eeabfa2700609e653e94d3f36805faa63 Mon Sep 17 00:00:00 2001 From: tatsuakimitani Date: Wed, 22 Mar 2017 10:39:23 +0900 Subject: [PATCH 4/5] Change encoding to UTF-8 --- convert.bat | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/convert.bat b/convert.bat index 6752338..8d58bb8 100644 --- a/convert.bat +++ b/convert.bat @@ -13,32 +13,32 @@ @echo off @rem ============================================================================ -@rem seleniumCodeBuilder ‚É‚æ‚é•ÏŠ·ˆ—‚ðŽÀs‚µ‚Ü‚·B +@rem seleniumCodeBuilder ã«ã‚ˆã‚‹å¤‰æ›å‡¦ç†ã‚’実行ã—ã¾ã™ã€‚ @rem ============================================================================ -@rem --- ŠÂ‹«•Ï”‚âƒJƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚ðƒ[ƒJƒ‹‰»‚µ‚Ü‚·B +@rem --- 環境変数やカレントディレクトリをローカル化ã—ã¾ã™ã€‚ setlocal -rem --- groovy ƒXƒNƒŠƒvƒg‚ÌŠi”[ƒfƒBƒŒƒNƒgƒŠ‚É•ÏX‚µ‚Ü‚·B +rem --- groovy ã‚¹ã‚¯ãƒªãƒ—ãƒˆã®æ ¼ç´ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å¤‰æ›´ã—ã¾ã™ã€‚ cd %~dp0\src\main\groovy echo ------------------------------------------ -echo --- ’uŠ·ˆ—‚ðŽÀŽ{‚µ‚Ü‚·... +echo --- ç½®æ›å‡¦ç†ã‚’実施ã—ã¾ã™... echo ------------------------------------------ java -Dfile.encoding=UTF-8 -cp .;../../../lib/* groovy.ui.GroovyMain SeleniumCodeBuilder.groovy %~dp0/input %~dp0/output %~dp0/setting.yaml echo. echo ------------------------------------------ -echo --- ƒpƒbƒP[ƒWŠK‘w‚ðݒ肵‚Ü‚·... +echo --- パッケージ階層を設定ã—ã¾ã™... echo ------------------------------------------ java -Dfile.encoding=UTF-8 -cp .;../../../lib/* groovy.ui.GroovyMain PackageModifier.groovy %~dp0/output %~dp0/output -@rem --- ˆø”•t‚«‚Å–{ƒoƒbƒ`‚ª‹N“®‚³‚ꂽꇂÍApause‚ðs‚¢‚Ü‚¹‚ñB +@rem --- 引数付ãã§æœ¬ãƒãƒƒãƒãŒèµ·å‹•ã•れãŸå ´åˆã¯ã€pauseを行ã„ã¾ã›ã‚“。 @if "%1"=="" ( pause ) -@rem --- ŠÂ‹«•Ï”“™‚̃[ƒJƒ‹‰»‚ðI—¹‚µ‚Ü‚·B +@rem --- 環境変数等ã®ãƒ­ãƒ¼ã‚«ãƒ«åŒ–を終了ã—ã¾ã™ã€‚ endlocal -@rem --- ³íI—¹‚µ‚Ü‚·B +@rem --- 正常終了ã—ã¾ã™ã€‚ exit /b 0 From 5c57699727faf81882bce26c681e9f8b63ce2555 Mon Sep 17 00:00:00 2001 From: tatsuakimitani Date: Wed, 22 Mar 2017 12:46:23 +0900 Subject: [PATCH 5/5] Add shell for Unix and Linux --- convert.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 convert.sh 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 ã«ã‚ˆã‚‹å¤‰æ›å‡¦ç†ã‚’実行ã—ã¾ã™ã€‚ +# ============================================================================ + +# --- 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 +