Selenium - 使用换行符将文件写入代码镜像

时间:2016-04-11 18:58:08

标签: javascript java json selenium codemirror

我正在编写一个selenium测试,它将JSON文件写入CodeMirror窗口。到目前为止,这是我的代码:

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”。这给出了“未终止的字符串文字”错误
  2. 用“\ r \ n”替换“\ n”。同样的错误。
  3. 用“< \ br>”替换“\ n” (没有反斜杠。我甚至无法在堆栈溢出时执行换行)。这只是在json文本中放了一堆“br”标签。
  4. 有什么想法吗?我猜测有一种方法可以逐行完成,但我宁愿能够将整个文件作为一个字符串发送。

1 个答案:

答案 0 :(得分: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");