1
JSemファイルをCodeMirrorウィンドウに書き込むセレンテストを作成しています。これまでのコードはここまでです:Selenium - コードを改行してコードミラーに書き込む
public void setJson(String jsonPath) throws IOException, InterruptedException {
// Read a file to a string
byte[] encoded = Files.readAllBytes(Paths.get(jsonPath));
String jsonText = new String(encoded, StandardCharsets.UTF_8);
// Get rid of line breaks
jsonText = jsonText.replace("\n", "");
// Escape the quotes
jsonText = jsonText.replace("\"", "\\\"");
// Write to the CodeMirror
WebElement queryInput = driver.findElement(By.xpath("//*[@id=\"content\"]/div/div[2]/div/div[1]/div[1]/div/div/div/div"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].CodeMirror.setValue(\"" + jsonText + "\");", queryInput);
}
このコードは機能します。しかし、JSONファイル全体を1行に書き出します。ここで私が試したことがいくつかあります。
- "\ n"を置き換えません。これにより、 "終端文字列リテラル"エラーが返されます。
- "\ n"を "\ r"に置き換えます。同じエラー。
- "\ n"を "< \ br>"(バックスラッシュなし)に置き換える。スタックオーバーフロー時に改行することもできません。これはちょうどjsonのテキストに "br"タグの束を入れます。
私はラインごとにこれを行う方法があると思いますが、むしろファイル全体を1つの文字列として送信することができます。
あなたのJSONは何ですか?既に改行がありますか、またはかなりのプリンタをお探しですか? –
あなたのJSONも貼り付けてください。 "\ n"を使用して "\ n"を置き換えてみてください – Vedanshu
JSONに改行( "\ n")がありましたが、そこに残しておけば、 "unterminated string literal"エラーが発生します。私はそれらを "\\ n"に置き換え、すべてがうまくいった!ありがとうVedanshu! – user2014969