使用Selenium网络驱动程序加载动态网址

时间:2018-12-06 16:18:53

标签: javascript java selenium url selenium-webdriver

我在内存中有一个html字符串(无法将其写入文件),我想在Selenium远程Webdriver中呈现该html字符串并获取屏幕截图。以下是我使用的代码

RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:9515"), capabilities);
driver.get("about:blank");
((JavascriptExecutor) driver)
.executeScript("arguments[0].innerHTML='" + StringEscapeUtils.escapeHtml3(_html) + "'");

这种方法的问题是,由于换行符或其他一些字符,它中断了Java脚本的执行,并出现以下错误

{"errorMessage":"Unexpected EOF","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":

我收到了日志错误消息,因此只粘贴了其中的某些部分。

我在SO中研究了this,但并没有太大帮助。

您能帮我解决这个问题吗?我的问题是我想在selenium驱动程序中加载html字符串并获取屏幕截图。

2 个答案:

答案 0 :(得分:1)

假设_html是您的html字符串,则应遵循以下内容:

driver.executeScript('document.body.innerHTML = arguments[0]', _html)

您不需要转义引号或换行符。

答案 1 :(得分:1)

要在同一 TAB 中的动态 URL 中打开,可以使用:

driver.get("about:blank");
((JavascriptExecutor) driver).executeScript("window.location.replace(" + StringEscapeUtils.escapeHtml3(_html) + ");");

要在新的 TAB 中的动态 URL 中打开,请使用:

driver.get("about:blank");
((JavascriptExecutor) driver).executeScript("window.open('" + StringEscapeUtils.escapeHtml3(_html) +"');");