我在内存中有一个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;");