将一个带有html / Javascript的字符串放入selenium webdriver

我在内存中有一个html文档作为一个字符串.它包含< script>标记有一个操纵dom的小脚本.我现在要将该html页面加载到selenium webdriver中,并在脚本操作之后返回页面.由于我已经在内存中存在html,所以我不太喜欢将html写入文件,并将其作为文件加载到driver.get(“file:// path / to / file”)中.所以问题是,如果有可能实现我想要的.

如果webdriver无法做到这一点,也许有其他的可能性?

这里有一个例子:

<html><head>
<script type="text/javascript">
function fill(){
    var i = "secret"
    document.forms[0].elements[1].value=i
}
</script>
</head><body onload="fill()">
<form method="POST"><input type="hidden" name="he1" value="">
<input type="hidden" name="he2" value="">
</form></body></html>

显然,我希望webdriver执行dom操作,并根据脚本更改表单.

注意这只是一个例子.我需要运行的实际脚本会做更复杂的事情.

解决方法

您可以加载一个空页面,例如:
<html></html>

然后设置它的innerHTML

ChromeDriver driver = new ChromeDriver();
driver.get("file://empty-page.html");
String innerHtml = "<head>...</head><body onload="...">...</body>";
driver.executeScript("document.innerHTML = " + innerHtml);

然后点燃身体上的负荷事件

driver.executeScript("$(document.body).trigger('load');");

然后得到结果HTML

String result = driver.executeScript("document.body.innerHTML;");

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...