我正在为AngularJS应用程序做一些测试,我不认为测试框架在这里必不可少,但我试图传递一个可选变量。此变量将指定我是否正在尝试获取传递给函数的ID的子元素
commonFunctions.elementDoesNotHaveAttribute('register-0', 'disabled', 'children[0].children[0]');
children[0].children[0]
实际上不是一个字符串,如果删除引号,则函数调用失败,因为它找不到.children[0]
的子对象
这是函数
function elementDoesNotHaveAttribute(id, attribute, child) {
var hasElement = false;
hasElement = casper.evaluate(function (id, attribute, child) {
var element = document.getElementById(id);
if (child) {
element = element.child;
}
return element.hasAttribute(attribute);
}, id, attribute, child);
if (hasElement) {
casper.test.fail('element has' + attribute + ' but shouldn\'t');
} else {
casper.test.pass('element didn\'t have ' + attribute + ' and shouldn\'t');
}
}
如何更改这些方程式的任何一方以最终评估我的函数中的element.children[0].children[0]
答案 0 :(得分:2)
虽然" eval hack"我发表的评论会发挥作用,这是一个坏主意。相反,考虑通过某种"转换"功能
if( child) {
element = child(element);
}
在致电children[0].children[0]
时,您可以这样做:
commonFunctions.elementDoesNotHaveAttribute(
'register-0',
'disabled',
function(e) {return e.children[0].children[0];}
);
该函数将获取元素并返回与其相关的其他内容。根据需要调整功能。