繁体   English   中英

从React组件中选择文本中的DOM元素

[英]Select DOM element by text from React component

我正在测试一个react组件,需要模拟组件内部特定元素的点击。 我不想仅仅为了测试添加id ,有没有办法通过文本选择这个元素?

const ReactTestUtils = require('react-test-utils');
const Sidebar = require('components/sidebar');

describe('clicking on More button', function() {
  it('triggers analytics event', function() {
    const component = renderComponent(<Sidebar policyPreferences={ this.policyPreferences } />);

    const moreButton = component.getDOMElementByText('More'); // <- I need something like this
    ReactTestUtils.Simulate.click(moreButton);

    expect(analytics.track).toHaveBeenCalled();
  }
}

以下函数遍历所有元素,直到找到具有匹配文本的元素:

function getElementByText(text){
    var all = document.getElementsByTagName("*");

    for (var i=0, max=all.length; i < max; i++) {
        if (all[i].innerHTML == text){
            return all[i];
        }
    }
    return null;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM