-
26. 01. 2012, 22:53 #1Mitglied
- Registriert seit
- Jan 2012
- Beiträge
- 4
C# webbrowser auf einenn button drücken lassen
hallo liebes, gulli board ich bin neu hier hoffe das es hier im richtigen bereich ist ^^
so mein problem ist ich bastelle mir grade ein youtube abonier bot zusammen aber mein bot clickt nicht auf den button
das ist der code für den button aber wie soll ich ihn anclicken ich hatte das so versuchtCode:<div id="subscribe-container" > <span class="footer-content"> <button onclick="controller.subscribe(null);return false;" type="button" class="action-initiator yt-uix-button" id="subscribe-button" role="button"><span class="yt-uix-button-content">Subscribe </span></button> <span class="username-container" title="0179cool"> 0179cool
könnt ihr mir helfen was mache ich falsch danke im vorausCode:webBrowser1.Document.GetElementById("subscribe-button").InvokeMember("click");
-
27. 01. 2012, 08:32 #2Mitglied
- Registriert seit
- Dec 2011
- Beiträge
- 72
Re: C# webbrowser auf einenn button drücken lassen
Hallo,
also bei mir sieht der HTML - Code von Youtube anderst aus.
Der Button hat also keine ID auf die man zugreiffen könnte.HTML-Code:<button href="https://accounts.google.com/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Dde_DE%26next%3D%252Fwatch%253Fv%253D_MFkGo-hsCY%2526feature%253Dg-logo%2526context%253DG2d74190FOAAAAAAAAAA&hl=de_DE&ltmpl=sso" type="button" class="yt-subscription-button yt-subscription-button-js-default end yt-uix-button" onclick=";window.location.href=this.getAttribute('href');return false;" data-enable-hovercard="true" data-subscription-value="W7h-1mymnJ96akzjrmiIgA" data-force-position="true" data-position="topright" data-subscription-feature="watch" data-subscription-type="" role="button"><img class="yt-uix-button-icon yt-uix-button-icon-subscribe" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt=""><span class="yt-uix-button-content"> <span class="subscribe-label">Abonnieren</span> <span class="subscribed-label">Abonniert</span> <span class="unsubscribe-label">Abo beenden</span> </span></button>
Aber du kannst das Navigated Ereignis (DocumentComplete funktioniert nicht?) des WebBrowsers abbonieren und dann über alle Buttons iterieren. Ca so:
Anstadt dem Click könntest du auch einfach dem href des Buttons folgen.Code:private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("link zum Youtube Video"); } private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { HtmlElementCollection htmlElements = webBrowser1.Document.GetElementsByTagName("button"); foreach (HtmlElement item in htmlElements) { if (item.InnerText.Contains("Abonnieren")) { item.InvokeMember("click"); } } }
Bei mir funktionierts zumindest
-
27. 01. 2012, 14:46 #3Mitglied
(Threadstarter)
- Registriert seit
- Jan 2012
- Beiträge
- 4
Re: C# webbrowser auf einenn button drücken lassen
danke für deinen tip werde es gleich mal ausprobiren zum aboniren hatte ich so ein link hier genutzt http://www.youtube.com/subscribe_widget?p=USERNAME
edit: habe es versucht aber mit deinem code geht es auch nicht kann du das dir nochmal für diesen link angucken bitteGeändert von lolboy123 (27. 01. 2012 um 15:45 Uhr)
-
27. 01. 2012, 16:35 #4Mitglied
- Registriert seit
- Dec 2011
- Beiträge
- 72
Re: C# webbrowser auf einenn button drücken lassen
Hallo,
sorry, dachte du willst Videos abonnieren.
Habe es gerade selbst ausprobiert und es Funktioniert schon. D.h. der Klick wird ausgeführt, jedoch wird ein JavaScript fehler geworfen.
Das Problem ist, dass das Webbrowser Control den veralteten IE 7 Browser im Hintergrund nimmt und dieser mit den neuesten JavaScript Methoden nicht klarkommt.
Du kannst jetzt entweder einen Registry-Hack versuchen:
http://www.west-wind.com/weblog/post...the-IE-Version
oder du benützt ein anderes WebBrowser Control.
-
27. 01. 2012, 17:04 #5Mitglied
(Threadstarter)
- Registriert seit
- Jan 2012
- Beiträge
- 4
Re: C# webbrowser auf einenn button drücken lassen
doch ich wolte ein kanel / video aboniren aber geht ja net ich mache mich auf die suche eines neuren controlers danke fürs erste wenn du doch ncoh tipps hast schreib mich an
EDIT: mit dem registery hack wir der controler jetz als internet explorer 9 erkant was muss ich jetz machen solte ja jetz eigentlich gehen mit dem abbonirenGeändert von lolboy123 (27. 01. 2012 um 17:36 Uhr)
-
28. 01. 2012, 12:17 #6Mitglied
- Registriert seit
- Dec 2011
- Beiträge
- 72
Re: C# webbrowser auf einenn button drücken lassen
Hallo,
es wäre hilfreich wenn du eine Fehlermeldung postest oder beschreibst was nicht funktioniert bzw wie es sich verhält.
Code wie du es versuchst hilft natürlich auch immer.
Ich kann dir nur mein Minimal-Beispiel geben mit dems bei mir funktioniert:
Code:private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://www.youtube.com/subscribe_widget?p=USERNAME"); webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); } void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Document.GetElementById("subscribe-button").InvokeMember("click"); }
-
28. 01. 2012, 12:59 #7
Re: C# webbrowser auf einenn button drücken lassen
Wenn du keine Seite anzeigen lassen willst, ist der Webbrowser das völlig falsche Objekt.
Ein Webbrowser ist zum Anzeigen von Inhalt da, nicht um Schritte im Internet zu Automatisieren.
Werf mal ein Blick auf die (Http)Webrequest Klassen.
-
28. 01. 2012, 14:02 #8Mitglied
(Threadstarter)
- Registriert seit
- Jan 2012
- Beiträge
- 4
Re: C# webbrowser auf einenn button drücken lassen
ok danke,
das drücken auf den knopf funktionirt jetz
tausend dank ^^ das lag am IE7 ^^ mit register hack hat irgentwie dan doch geklaptGeändert von lolboy123 (28. 01. 2012 um 14:52 Uhr)
-


Zitieren
mehr lesen...







Occupy Kiel: Massiver Sachschaden...
Heute, 20:15 in gulli:news