我正在为我的应用程序编写自动化测试。我想到的测试之一是检查应用程序中的 XSS 漏洞(特别是脚本/标记注入)。
假设我有一个接受文本输入的字段:
<input id="messageInput" name="message" />
并假设它在其他地方打印输入消息,如下所示:
<p id="messageOutput">You entered ${message}</p>
最简单的测试用例会尝试输入标记,<b>Hello</b>
而不是纯文本。
如何验证标记实际上并未在浏览器上呈现?我能想到的一种肮脏方式是深入到显示输入的元素。
@FindBy(id = "messageOutput")
WebElement messageOutput;
public boolean isMarkupRendered() {
try {
messageOutput.findElement(By.tagName("b"));
return true;
} catch (NoSuchElementException e) {
return false;
}
}
但是,这将我的方法与我可能提供的测试数据类型联系起来 - 它不够通用,无法处理诸如
<script>document.body.style.backgroundColor='red'</script>
这里有什么建议吗?Selenium 是否提供了一种更清洁的方法?