我正在使用react-testing-libarary测试我的react应用程序。由于某种原因,我需要能够通过id
而不是data-testid
来查找元素。在文档中没有实现此目的的方法。
有没有办法做到这一点?
我将输出呈现为:
const dom = render(<App />);
我正在寻找符合以下条件的东西:
const input = dom.getElemenById('firstinput');
//or
const input = dom.getById('firstinput');
答案 0 :(得分:9)
看起来您拥有DOM节点本身为container。因此,您应该可以以此来呼叫std::filesystem
。
答案 1 :(得分:4)
在测试库中,
您可以在配置中使用testIdAttribute
进行设置。
configure({ testIdAttribute: 'id' })
https://testing-library.com/docs/dom-testing-library/api-configuration
答案 2 :(得分:3)
我觉得所有答案都没有给出完整的解决方案,所以这里是:
const result = render(<SomeComponent />);
const someElement = result.container.querySelector('#some-id');
答案 3 :(得分:2)
我找到了一种方法。
import App from './App';
import { render, queryByAttribute } from 'react-testing-library';
const getById = queryByAttribute.bind(null, 'id');
const dom = render(<App />);
const table = getById(dom.container, 'directory-table');
我希望这会有所帮助。
答案 4 :(得分:1)
有两种方法
container.getElementById('id')
。最后,所有帮助者所做的就是在幕后进行这样的查询最后一点,如果可以避免通过id查找元素,那就更好了。
答案 5 :(得分:0)
我的建议:停止通过 id 添加和搜索,这总是需要花费大量时间和精力,因为您必须添加 id(有时是 test-id),然后找出查询元素的最佳方式。但即使您真的需要一个 id,这个工具也会通过显示查询屏幕上任何 DOM 元素的最佳方式为您节省大量时间:Testing Playground