2011-03-15 12 views
14

मैं एक स्वचालन कार्यक्रम कर रहा हूं। मैं अपने विंडोज़ फॉर्म में एक वेबपेज लोड करता हूं और इसे वेबब्रोसर नियंत्रण में लोड करता हूं। फिर, मुझे WebBrowser प्रोग्रामिक रूप से एक लिंक पर क्लिक करने की आवश्यकता है। मैं यह कैसे कर सकता हूँ? उदाहरण के लिए:HTMLElement के साथ प्रोग्राम तत्व रूप से लिंक तत्व पर क्लिक कैसे करें?

  1. <a href="http://www.google.com">Google Me</a>

  2. <a href="http://www.facebook.com" id="fbLink">Facebook Me</a>

ऊपर 2 अलग स्थितियां हैं। पहले तत्व में id विशेषता नहीं है जबकि दूसरा दूसरा करता है। प्रत्येक प्रोग्रामेटिक रूप से क्लिक करने के तरीके पर कोई विचार?

+0

प्रोग्रामेटिक रूप से क्लिक करके आपका क्या मतलब है? –

+0

प्रोग्राम स्वचालित रूप से लिंक पर क्लिक करेगा। प्रोग्रामेटिक रूप से क्लिक करने का अर्थ है कि इसे प्रोग्राम द्वारा क्लिक किया जाता है, लेकिन आपके उत्तर, Rune के लिए उपयोगकर्ता – DEN

उत्तर

17

आप, पहले अपने तत्व खोजने के लिए अपने आईडी या अन्य फिल्टर द्वारा:

HtmlElement fbLink = webBrowser.Document.GetElementByID("fbLink"); 

और अनुकरण करने के लिए "क्लिक":

fbLink.InvokeMember("click"); 

भीतरी पाठ करके अपने लिंक को खोजने के लिए एक उदाहरण:

HtmlElement FindLink(string innerText) 
{ 
    foreach (HtmlElement link in webBrowser.Document.GetElementsByTagName("a")) 
    { 
     if (link.InnerText.Equals("Google Me")) 
     { 
      return link; 
     } 
    } 
} 
+0

मैं इस कोड को axwebbrowser ईवेंट के तहत कार्यान्वित नहीं कर सकता। मैं ब्रेकपॉइंट का उपयोग करके इसे डीबग करने का प्रयास करता हूं, लेकिन मुझे पता चला यह स्वचालित रूप से "foreach (WebBrowser.Document.GetElementsByTagName (" a ") में HtmlElement लिंक पर रुक जाएगा"। क्या आप जानते हैं कि क्या हो रहा है? – DEN

+0

mshtml.HTMLDocument htm = (mshtml.HTMLDocument) axWebBrowser1.Document; foreach (htm.getElementsByTagName में HtmlElement लिंक ("एक")) { अगर (link.InnerText.Equals ("उन्नत खोज")) { MessageBox.Show ("हाँ !!"); } } – DEN

+0

इसकी बहुत पुरानी पोस्ट अभी भी मैं जानना चाहता हूं कि मुझे 'webBrowser.Document' क्यों' शून्य 'के रूप में और' DocumentCompleted 'ईवेंट को संभालने का तरीका क्यों मिल रहा है। – Sandy

1

आपको ब्राउज़र को स्वचालित करने के लिए एक तरीका चाहिए।

ऐसा करने का एक तरीका Watin (https://sourceforge.net/projects/watin/) का उपयोग करना है। यह आपको एक .Net प्रोग्राम लिखने की अनुमति देता है जो ब्राउज़र को सुविधाजनक ऑब्जेक्ट मॉडल के माध्यम से नियंत्रित करता है। इसका मुख्य रूप से वेब पृष्ठों के लिए स्वचालित परीक्षण लिखने के लिए उपयोग किया जाता है, लेकिन इसका उपयोग ब्राउज़र को नियंत्रित करने के लिए भी किया जा सकता है।

यदि आप ब्राउज़र को इस तरह से नियंत्रित नहीं करना चाहते हैं तो आप उस पृष्ठ पर एक जावास्क्रिप्ट लिख सकते हैं जिसे आप अपने पृष्ठ पर शामिल करते हैं जो क्लिक करता है, लेकिन मुझे संदेह है कि आप यही कर रहे हैं।

+0

thx द्वारा क्लिक नहीं किया गया है। हालांकि, मैं axWebBrowser का उपयोग कर स्वयं द्वारा स्वचालन फ़ंक्शन लिख रहा हूं। लेकिन मुझे लिंक पर क्लिक करने की समस्या का सामना करना पड़ता है :( – DEN

+0

@DEN यदि ऐसा कोई आसान कार्य एक समस्या है जो लाइब्रेरी का उपयोग करने के लिए एक मजबूत तर्क है। – user3285954

+0

यह सुनिश्चित नहीं है कि वह कभी भी वॉटिन डोमेन था, लेकिन यह अब और नहीं है। केवल http://watin.sourceforge.net/index.html – paqogomez

संबंधित मुद्दे