2016-04-11 3 views
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行に書き出します。ここで私が試したことがいくつかあります。

  1. "\ n"を置き換えません。これにより、 "終端文字列リテラル"エラーが返されます。
  2. "\ n"を "\ r"に置き換えます。同じエラー。
  3. "\ n"を "< \ br>"(バックスラッシュなし)に置き換える。スタックオーバーフロー時に改行することもできません。これはちょうどjsonのテキストに "br"タグの束を入れます。

私はラインごとにこれを行う方法があると思いますが、むしろファイル全体を1つの文字列として送信することができます。

+0

あなたのJSONは何ですか?既に改行がありますか、またはかなりのプリンタをお探しですか? –

+0

あなたのJSONも貼り付けてください。 "\ n"を使用して "\ n"を置き換えてみてください – Vedanshu

+0

JSONに改行( "\ n")がありましたが、そこに残しておけば、 "unterminated string literal"エラーが発生します。私はそれらを "\\ n"に置き換え、すべてがうまくいった!ありがとうVedanshu! – user2014969

答えて

0

がラインを取り除くためには、壊れ

試してみてください。

jsonText = jsonText.replaceAll("\n", "\\\\\\\\\\\\\\\\r\\\\\\\\\\\\\\\\n"); // for all occurrence 
// This will replace \n with \\\\r\\\\n a new line for codemirror 

または

jsonText = jsonText.replace("\n", "\\\\\\\\\\\\\\\\r\\\\\\\\\\\\\\\\n");