diff --git a/src/Base/BaseSelector.jsx b/src/Base/BaseSelector.jsx
index ba07d30e..64adcb30 100644
--- a/src/Base/BaseSelector.jsx
+++ b/src/Base/BaseSelector.jsx
@@ -144,6 +144,7 @@ export default function (modeName) {
         ariaId,
         renderSelection, renderPlaceholder,
         tabIndex,
+        ...restProps
       } = this.props;
       const { rcTreeSelect: { onSelectorKeyDown } } = this.context;
 
@@ -178,6 +179,7 @@ export default function (modeName) {
           onFocus={this.onFocus}
           onBlur={this.onBlur}
           onKeyDown={onSelectorKeyDown}
+          {...restProps}
         >
           <span
             key="selection"
diff --git a/src/SelectTrigger.jsx b/src/SelectTrigger.jsx
index 0eef6305..abbea584 100644
--- a/src/SelectTrigger.jsx
+++ b/src/SelectTrigger.jsx
@@ -80,6 +80,7 @@ class SelectTrigger extends React.Component {
       dropdownStyle, onDropdownVisibleChange, getPopupContainer,
       dropdownPrefixCls, popupElement, open,
       children,
+      ...restProps
     } = this.props;
 
     // TODO: [Legacy] Use new action when trigger fixed: https://github.com/react-component/trigger/pull/86
@@ -113,6 +114,7 @@ class SelectTrigger extends React.Component {
           },
         )}
         popupStyle={dropdownStyle}
+        {...restProps}
       >
         {children}
       </Trigger>
diff --git a/tests/Select.props.spec.js b/tests/Select.props.spec.js
index 24e83a39..60890f7d 100644
--- a/tests/Select.props.spec.js
+++ b/tests/Select.props.spec.js
@@ -58,7 +58,12 @@ describe('TreeSelect.props', () => {
     const wrapper = mount(createOpenSelect({ prefixCls: 'another-cls' }));
     expect(wrapper.render()).toMatchSnapshot();
   });
-
+  
+  it('dataAttributes', ()=>{
+    const wrapper = mount(createOpenSelect({ 'data-testid': 'my-test-id' }));
+    expect(wrapper.find('[data-testid="my-test-id"]')).toBe();
+  })
+  
   it.skip('animation', () => {
     // setMock(true);
     const wrapper = mount(