2017-07-26 80 views
1

我构建了包装:酶 - 芒无法找到id元素

this.wrapper = mount(<App />, { context: this.store }); 

然后我试图通过它的ID查找某个HTML元素:

console.log("WRAPPER:", this.wrapper.debug()); 
return this.wrapper.find('#Form-input[0]-fields-field1'); 

的包装是无法找到这个元素。在执行console.log的输出如下:

WRAPPER: 
<Many children/components down...> 
    <input name="Form-input[0].fields.field1" onBlur={[Function]} onChange={[Function]} onDragStart={[Function]} onDrop={[Function]} onFocus={[Function]} value="asdf" type="text" id="Form-input[0]-fields-field1" disabled={false} /> 
<Many more things after this...> 

所以用正确的ID输入肯定是存在的。我错过了什么吗?

回答

2

看来,您正在使用的ID选择#Form-input[0]-fields-field1但我相信[]是无效的CSS IDs,也许你可以按名称搜索输入,并input[name="Form-input[0]-fields-field1"]工作?如果我错了,方括号确实没问题,您可能仍然需要在查询中将它们转义出来!

+0

你是对的!但是,wrapper.find似乎不允许转义字符。因此,我最终通过调用wrapper.find({id:'Form-input [0] -fields-field1'})来解决这个问题。 – Infamous911

+0

很高兴你解决它!我检查了Enzyme的回购有关这个问题 - 他们正在寻求改进选择器的解决方案。 –

+0

是的,'find'的参数不像普通的css选择器字符串那样被处理是超级混淆!它似乎在寻找这个角色,在这个角色它忽略了那个角色之后的所有其他角色。 – Infamous911