Skip to content

Commit 1256dfe

Browse files
committed
Updating getActiveElement command for IE driver to handle contentEditable elements
1 parent e22cab5 commit 1256dfe

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

cpp/iedriver/CommandHandlers/SendKeysCommandHandler.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,34 @@ bool SendKeysCommandHandler::SetInsertionPoint(IHTMLElement* element) {
871871
hr = element->QueryInterface<IHTMLTextAreaElement>(&text_area_element);
872872
if (SUCCEEDED(hr) && text_area_element) {
873873
text_area_element->createTextRange(&range);
874+
} else {
875+
CComPtr<IHTMLElement3> element3;
876+
element->QueryInterface<IHTMLElement3>(&element3);
877+
VARIANT_BOOL is_content_editable_variant = VARIANT_FALSE;
878+
if (element3) {
879+
element3->get_isContentEditable(&is_content_editable_variant);
880+
}
881+
bool is_content_editable = is_content_editable_variant == VARIANT_TRUE;
882+
if (is_content_editable) {
883+
CComPtr<IDispatch> dispatch;
884+
hr = element->get_document(&dispatch);
885+
if (dispatch) {
886+
CComPtr<IHTMLDocument2> doc;
887+
hr = dispatch->QueryInterface<IHTMLDocument2>(&doc);
888+
if (doc) {
889+
CComPtr<IHTMLElement> body;
890+
hr = doc->get_body(&body);
891+
if (body) {
892+
CComPtr<IHTMLBodyElement> body_element;
893+
hr = body->QueryInterface<IHTMLBodyElement>(&body_element);
894+
if (body_element) {
895+
hr = body_element->createTextRange(&range);
896+
range->moveToElementText(element);
897+
}
898+
}
899+
}
900+
}
901+
}
874902
}
875903
}
876904

0 commit comments

Comments
 (0)