【问题标题】:Loading dynamic url using Selenium webdriver使用 Selenium webdriver 加载动态 url
【发布时间】:2018-12-06 16:18:53
【问题描述】:

我在内存中有一个 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 字符串并截屏。

【问题讨论】:

  • 似乎将html保存到文件然后打开文件是最简单的。
  • 我正在使用 Apache strom,无法将字符串保存到文件 :(

标签: javascript java selenium url selenium-webdriver


【解决方案1】:

假设_html是你的html字符串,它应该是:

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

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

【讨论】:

    【解决方案2】:

    要在同一个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) +"');");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2013-07-26
      相关资源
      最近更新 更多