我正在编写一个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文件写在一行上。这是我尝试过的一些事情。
有什么想法吗?我猜测有一种方法可以逐行完成,但我宁愿能够将整个文件作为一个字符串发送。
答案 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");