mshtml.htmldocumentclass في C #
سؤال
في C #، تمكنت من الحصول على كامل htmldocumentclass من كائن InternetExPlorer (التنقل إلى عنوان URL معين).
ومع ذلك، في وضع تصحيح Visual Studio 2008، فإن محتوى هذا htmldocumentclass لهذا عنوان URL معين ضخم، بما في ذلك سمات مثل الأيسم، Alinkcolor، الكل، التطبيقات والأطباق والأطفال، الأطفال، إلخ، إلخ، إلخ، إلخ.
يوجد زر في تلك الصفحة التي أريد التغيير فيها بالنقر فوق "النقر". ولكن ليس لدي أي فكرة عن كيفية العثور على اسم / معرف / علامة هذا الزر. هناك برنامج تعليمي بسيط يستخدم عبارات مثل:
HTMLInputElement button =
(HTMLInputElement)theDoc.getElementById("Button1");
button.click();
ولكن هيكل URL الخاص بي هو 100 مرة أكثر تعقيدا من ذلك.
دعنا نقول عنوان URL هو Yahoo.com، وأريد "النقر فوق" زر بحث الويب.
أي طريقة منهجية لهذا العمل؟
المحلول
هذا يفترض أن تحكم WebBrowser الخاص بي في Yahoo. معرف زر البحث هو "SearchSubMit"
باستخدام Windows.Forms.htmldocument.
HtmlElement button = (HtmlElement)htmlDoc.GetElementById("searchsubmit");
button.InvokeMember("click");
إذا كنت تستخدم mshtml و htmlinputelement
HTMLDocument htmlDoc = new HTMLDocumentClass();
htmlDoc = (HTMLDocument)axWebBrowser1.Document;
//find the search text box..
HTMLInputElement searchTextBox = (HTMLInputElement)htmlDoc.all.item("p", 0);
searchTextBox.value = "Stack Overflow";
//find the button
HTMLInputElement searchButton = (HTMLInputElement)htmlDoc.all.item("searchsubmit", 0);
searchButton.click();
إذا نظرت إلى مصدر ياهو، فسترى أن مربع نص البحث ضمن Divs متعددة. htmldoc.all.Item. يعتني به.