diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 959bfe3940d..ab9e8b55589 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2413,6 +2413,54 @@ static void test_dynamic_properties(IHTMLElement *elem)
SysFreeString(attr1);
}
+static void test_attr_collection_disp(IDispatch *disp)
+{
+ IDispatchEx *dispex;
+ IHTMLDOMAttribute *attr;
+ DISPPARAMS dp = {NULL, NULL, 0, 0};
+ VARIANT var;
+ EXCEPINFO ei;
+ DISPID id;
+ BSTR bstr;
+ HRESULT hres;
+
+ hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
+ ok(hres == S_OK, "QueryInterface failed: %08x\n", hres);
+
+ bstr = a2bstr("0");
+ hres = IDispatchEx_GetDispID(dispex, bstr, fdexNameCaseSensitive, &id);
+ ok(hres == S_OK, "GetDispID failed: %08x\n", hres);
+ SysFreeString(bstr);
+
+ VariantInit(&var);
+ hres = IDispatchEx_InvokeEx(dispex, id, LOCALE_NEUTRAL, INVOKE_PROPERTYGET, &dp, &var, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ ok(V_VT(&var) == VT_DISPATCH, "V_VT(var)=%d\n", V_VT(&var));
+ ok(V_DISPATCH(&var) != NULL, "V_DISPATCH(var) == NULL\n");
+ VariantClear(&var);
+
+ bstr = a2bstr("attr1");
+ hres = IDispatchEx_GetDispID(dispex, bstr, fdexNameCaseSensitive, &id);
+ ok(hres == S_OK, "GetDispID failed: %08x\n", hres);
+ SysFreeString(bstr);
+
+ VariantInit(&var);
+ hres = IDispatchEx_InvokeEx(dispex, id, LOCALE_NEUTRAL, INVOKE_PROPERTYGET, &dp, &var, &ei, NULL);
+ ok(hres == S_OK, "InvokeEx failed: %08x\n", hres);
+ ok(V_VT(&var) == VT_DISPATCH, "V_VT(var)=%d\n", V_VT(&var));
+ ok(V_DISPATCH(&var) != NULL, "V_DISPATCH(var) == NULL\n");
+ hres = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IHTMLDOMAttribute, (void**)&attr);
+ ok(hres == S_OK, "QueryInterface failed: %08x\n", hres);
+ hres = IHTMLDOMAttribute_get_nodeName(attr, &bstr);
+ ok(hres == S_OK, "get_nodeName failed: %08x\n", hres);
+ ok(!strcmp_wa(bstr, "attr1"), "node name is %s, expected attr1\n", wine_dbgstr_w(bstr));
+ SysFreeString(bstr);
+ IHTMLDOMAttribute_Release(attr);
+ VariantClear(&var);
+
+ IDispatchEx_Release(dispex);
+}
+
static void test_attr_collection(IHTMLElement *elem)
{
static const WCHAR testW[] = {'t','e','s','t',0};
@@ -2516,6 +2564,8 @@ static void test_attr_collection(IHTMLElement *elem)
ok(hres == E_INVALIDARG, "item failed: %08x\n", hres);
VariantClear(&id);
+ test_attr_collection_disp(disp);
+
IDispatch_Release(disp);
IHTMLAttributeCollection_Release(attr_col);
}