【发布时间】:2015-05-21 17:27:21
【问题描述】:
我想编写单元测试以通过使用 casperJS 单击表单按钮来下载文件。我尝试使用 document.getElementsByTagName
来访问按钮并以 JavaScript 的方式单击它。但我收到一条错误消息:
TypeError: 'undefined' is not a function (evaluating 'inputs[1].click()')
没有通过测试的代码段:
casper.then(function() {
var inputs = document.getElementsByTagName('input');
inputs[1].click();
});
当我尝试从浏览器的控制台执行相同的代码时,单击按钮并弹出下载窗口。
我最初尝试使用 casperJS 中的 assertExists 函数检查按钮是否存在。断言通过,表明按钮存在。此外,inputs 数组有 2 个元素,一个是 CSRF 令牌的隐藏输入(我使用的是 Django),另一个是我要单击的按钮。
【问题讨论】:
-
inputs[1] === undefined 表示索引 1 处没有元素,您的意思是 0 吗?
-
尝试使用开发工具添加断点,看看当您尝试查找输入时发生了什么。您还可以暂停所有异常,因此您甚至不需要设置断点。更多信息请看这里:developer.chrome.com/devtools/docs/javascript-debugging
标签: javascript unit-testing phantomjs casperjs