luk*_*sch 18 javascript java 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>
Run Code Online (Sandbox Code Playgroud)
显然,我希望webdriver执行dom操作并根据脚本更改表单.
请注意,这只是一个例子.我需要运行的实际脚本做了更复杂的事情.
lan*_*ava 19
你可以加载一个空页面,例如:
<html></html>
Run Code Online (Sandbox Code Playgroud)
然后设置它的innerHTML
ChromeDriver driver = new ChromeDriver();
driver.get("file://empty-page.html");
String innerHtml = "<head>...</head><body onload="...">...</body>";
driver.executeScript("document.innerHTML = " + innerHtml);
Run Code Online (Sandbox Code Playgroud)
然后在身体上发射加载事件
driver.executeScript("$(document.body).trigger('load');");
Run Code Online (Sandbox Code Playgroud)
然后得到结果HTML
String result = driver.executeScript("document.body.innerHTML;");
Run Code Online (Sandbox Code Playgroud)
jol*_*vin 17
如果您不想在替换页面内容之前创建文件或加载URL,则可以始终利用支持HTML,CSS和JavaScript 的数据URL功能:
ChromeDriver driver = new ChromeDriver();
html_content = """
<html>
<head></head>
<body>
<div>
Hello World =)
</div>
</body>
</html>
"""
driver.get("data:text/html;charset=utf-8," + html_content)
Run Code Online (Sandbox Code Playgroud)
小智 9
此代码可以加载任何包含 js 和 css 的 html 字符串。
html_bs64 = base64.b64encode(innerHtml.encode('utf-8')).decode()
driver.get("data:text/html;base64," + html_bs64)
Run Code Online (Sandbox Code Playgroud)
小智 6
使用Java Selenium 2.4.2,我使用以下内容替换现有元素的内部html。我使用Apache StringEscapeUtils.escapeJavaScript来转义HTML,因为这是内部html的JavaScript替代。
public void replaceHTML(By by, String html) {
WebElement e = driver.findElement(by);
((JavascriptExecutor) driver).executeScript("arguments[0].innerHTML='" + StringEscapeUtils.escapeJavaScript(html) + "'", e);
}
Run Code Online (Sandbox Code Playgroud)
我传入的示例html字符串。
<button type="button" onclick="alert('Hello world!')">Click Me!</button>Run Code Online (Sandbox Code Playgroud)
笔记:
由于无效的转义字符,我无法使用“ Lance Java's”方法。在等号后添加单引号可解决此问题。
我测试了使用driver.get('about:blank');的“肯尼思·巴尔特里尼克(Kenneth Baltrinic)”的建议;但我无法在屏幕上与基本文档进行交互。在Java中,我必须使用双引号driver.get(“ about:blank”)。我使用Chrome浏览器进行了测试。
| 归档时间: |
|
| 查看次数: |
19962 次 |
| 最近记录: |