|
You last visited: Today at 21:36
Advertisement
C# WebBrowser-> Facebooklogin
Discussion on C# WebBrowser-> Facebooklogin within the .NET Languages forum part of the Coders Den category.
09/23/2014, 08:33
|
#16
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Quote:
Originally Posted by Ammy'
== nicht = 
|
|
|
|
09/23/2014, 08:39
|
#17
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
leg mal über dem if aber unter dem foreach nen string an
string className = curElement.GetAttribute("classname").ToString();
und dann im if
If(className == "mrm _42ft _4jy0 _39__ _4jy4 _517h")
{
//code
}
|
|
|
09/23/2014, 08:49
|
#18
|
elite*gold: 666
Join Date: Apr 2011
Posts: 5,810
Received Thanks: 2,418
|
Hört sich danach an, als würden die Klammern immer noch fehlen.
Das ToString() sollte aber sowieso unnötig sein.
|
|
|
09/23/2014, 09:43
|
#19
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Quote:
Originally Posted by Sycophantic
Hört sich danach an, als würden die Klammern immer noch fehlen.
Das ToString() sollte aber sowieso unnötig sein.
|
Ups, als das nicht ging hab ich es wieder zurück geändert. Daran lag es!
Neues Problem:
Das Programm loggt sich ein, navigiert zu dem Link, klickt aber nicht auf "Gruppe beitreten"
Der Code bis jetzt:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace FBGroupJoiner
{
public partial class Form1 : Form
{
//string path;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("email").InnerText = textBox1.Text;
webBrowser1.Document.GetElementById("pass").InnerText = textBox2.Text;
label4.Text = "Login..";
webBrowser1.Document.GetElementById("loginbutton").InvokeMember("click");
Thread.Sleep(1000);
label4.Text = "Navigiere zur Gruppe..";
webBrowser1.Navigate("https://www.facebook.com/groups/268154400034569/?fref=ts");
label4.Text = "Tritt der Gruppe bei..";
Thread.Sleep(1000);
HtmlElementCollection theElementCollection = default(HtmlElementCollection);
theElementCollection = webBrowser1.Document.GetElementsByTagName("a");
foreach (HtmlElement curElement in theElementCollection)
{
if (curElement.GetAttribute("className").ToString() == "mrm _42ft _4jy0 _39__ _4jy4 _517h")
{
webBrowser1.Navigate(curElement.GetAttribute("ajaxify"));
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://de-de.facebook.com");
Thread.Sleep(2000);
}
private void button2_Click(object sender, EventArgs e)
{
//openFileDialog1.ShowDialog();
//path = openFileDialog1.FileName;
//textBox3.Text = path;
}
}
}
|
|
|
09/23/2014, 09:52
|
#20
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Mach nen Extrabutton für Gruppe beitreten, die Funktion zum drücken des "Gruppe beitreten"-Buttons wird schon während dem laden der Seite ausgeführt = er "drückt" einen noch nicht existent knopf.
|
|
|
09/23/2014, 09:57
|
#21
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Ich würde das gerne automatisieren.
Wenn ich warten würde bis sich der Browser vollständig geladen hat, würde nix passieren, weil der Browser nie fertig wird.
Habe mal:
Code:
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
MessageBox.Show("Fertig");
}
probiert. Die MessageBox ist nie aufgegangen.
|
|
|
09/23/2014, 10:00
|
#22
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Also du machst ne neue Funktion die das Gruppe Beitreten ausführt. Dann nimmst nen Timer und prüfst bei jedem tick ob der Webbrowser fertig geladen hat. Wenn ja dann führst du die Funktio aus, wenn nicht eben nicht. Und den Timer dann einfach unendlich loopen lassen / bis er das erste mal der Gruppe beigetreten ist.
Edit: Zu deinem MessageBox-Versuch
Ich versuchs mal relativ einfach zu erklären:
Also die Funktion geht von oben nach unten deinen Code durch und führt eben diesen aus. Wenn du jetzt den Webbrowser lädst und danach den Readycheck machst, wird er klar sagen "Ne is net ready" weil der Code ausgeführt wird aber nicht wartet weil der Code nur sagt "navigiere zu" und nicht "navigiere und warte bis fertig" :P
|
|
|
09/23/2014, 10:08
|
#23
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Quote:
Originally Posted by Ammy'
Also du machst ne neue Funktion die das Gruppe Beitreten ausführt. Dann nimmst nen Timer und prüfst bei jedem tick ob der Webbrowser fertig geladen hat. Wenn ja dann führst du die Funktio aus, wenn nicht eben nicht. Und den Timer dann einfach unendlich loopen lassen / bis er das erste mal der Gruppe beigetreten ist.
|
Okay das überfordert mich jetzt. Soweit bin ich noch nicht mit C#  .
Kannst du vlt ein Codebeispiel posten?
|
|
|
09/23/2014, 10:14
|
#24
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Code:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("email").InnerText = textBox1.Text;
webBrowser1.Document.GetElementById("pass").InnerText = textBox2.Text;
label4.Text = "Login..";
webBrowser1.Document.GetElementById("loginbutton").InvokeMember("click");
Thread.Sleep(1000);
label4.Text = "Navigiere zur Gruppe..";
webBrowser1.Navigate("https://www.facebook.com/groups/268154400034569/?fref=ts");
label4.Text = "Tritt der Gruppe bei..";
Thread.Sleep(1000);
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
timer1.Enabled = false;
HtmlElementCollection theElementCollection = default(HtmlElementCollection);
theElementCollection = webBrowser1.Document.GetElementsByTagName("a");
foreach (HtmlElement curElement in theElementCollection)
{
if (curElement.GetAttribute("className").ToString() == "mrm _42ft _4jy0 _39__ _4jy4 _517h")
{
webBrowser1.Navigate(curElement.GetAttribute("ajaxify"));
}
}
}
}
Sollte gehen o: Nicht vergessen nen Timer auf die Form zu ziehen / einen per Code zu erstellen
|
|
|
09/23/2014, 10:18
|
#25
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Quote:
Originally Posted by Ammy'
Code:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("email").InnerText = textBox1.Text;
webBrowser1.Document.GetElementById("pass").InnerText = textBox2.Text;
label4.Text = "Login..";
webBrowser1.Document.GetElementById("loginbutton").InvokeMember("click");
Thread.Sleep(1000);
label4.Text = "Navigiere zur Gruppe..";
webBrowser1.Navigate("https://www.facebook.com/groups/268154400034569/?fref=ts");
label4.Text = "Tritt der Gruppe bei..";
Thread.Sleep(1000);
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
timer1.Enabled = false;
HtmlElementCollection theElementCollection = default(HtmlElementCollection);
theElementCollection = webBrowser1.Document.GetElementsByTagName("a");
foreach (HtmlElement curElement in theElementCollection)
{
if (curElement.GetAttribute("className").ToString() == "mrm _42ft _4jy0 _39__ _4jy4 _517h")
{
webBrowser1.Navigate(curElement.GetAttribute("ajaxify"));
}
}
}
}
Sollte gehen o: Nicht vergessen nen Timer auf die Form zu ziehen / einen per Code zu erstellen
|
Macht der Timer dann "Thread.Sleep" überflüssig?
|
|
|
09/23/2014, 10:19
|
#26
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Ja. Hab nur dein Code gecopyed deshalb vergessen das raus zu nehmen
An die Procoder: Bin selbst noch neu also falls was unsauber seien sollte bitte mit korrigieren :P
|
|
|
09/23/2014, 10:24
|
#27
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Es funktioniert nicht.. Der Tritt der Gruppe nicht bei. Ich glaube weil , "WebBrowser.ReadyState.Complete" nie eintritt.
|
|
|
09/23/2014, 10:28
|
#28
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Versuchs mal mit == WebBrowserReadyState.Loaded und nicht complete
(keine Garantie, hab 0 Ahnung vom WebBrowser)
|
|
|
09/23/2014, 10:31
|
#29
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Quote:
Originally Posted by Ammy'
Versuchs mal mit == WebBrowserReadyState.Loaded und nicht complete
(keine Garantie, hab 0 Ahnung vom WebBrowser)
|
Nope, es tut sich nichts.
|
|
|
09/23/2014, 10:35
|
#30
|
elite*gold: 0
Join Date: Sep 2014
Posts: 896
Received Thanks: 100
|
Grad was gefunden
diese Methode führst du dann im TimerTick aus also
Code:
private void timer1_Tick(object sender, EventArgs e)
{
webBrowser1_DocumentCompleted();
}
und bei der Methode sieht das dann so aus
Code:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
//This line is so you only do the event once
if (e.Url != webBrowser1.Url)
{
return;
}
else
{
timer1.Enabled = false;
HtmlElementCollection theElementCollection = default(HtmlElementCollection);
theElementCollection = webBrowser1.Document.GetElementsByTagName("a");
foreach (HtmlElement curElement in theElementCollection)
{
if (curElement.GetAttribute("className").ToString() == "mrm _42ft _4jy0 _39__ _4jy4 _517h")
{
webBrowser1.Navigate(curElement.GetAttribute("ajaxify"));
}
}
}
}
Ps: meine Formatierung sieht kacke aus ich weiß ^^
|
|
|
 |
|
Similar Threads
|
VB.net webbrowser statt in IE in zweitem webbrowser laden :((
07/19/2013 - .NET Languages - 2 Replies
Hallo alle zusammen.
Mein Webbrowser klickt auf einen button, und dieser öffnet eine neue seite, die im IE geöffnet wird. Doch statt sie im IE zu öffnen, soll er sie in einem zweitem webbrowser auf einer anderen form öffnen..
Das problem dabei ist, dass ich soweit ich weiß nicht einfach den link nehmen kann und mit webbrowser.navigate dorthin kann, weil ich dabei eingeloggt bleiben muss.
Ich weiß dass das Thema schon oft behandelt wurde, sowohl hier als auch woanderas, aber diese ganzen...
|
[Webbrowser] In Do Loop warten bis Webbrowser fertig geladen hat
02/21/2013 - .NET Languages - 3 Replies
Ich hab hier folgenden Code:
With New StreamReader(path)
Do
While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
End While
Dim question As String = .ReadLine
RichTextBox1.Text = question
WebBrowser1.Document.GetElementById("profile- input").SetAttribute("value", question)
|
VB.Webbrowser
06/07/2012 - .NET Languages - 8 Replies
Hallo,
ich habe viele Foren durchforstet und keiner konnte mir eine richtige Erklärung bzw hinweis geben & hoffe mir kann hier jmd weiterhelfen.
Ich möchte mich in der Form einloggen & navigieren.
http://img5.fotos-hochladen.net/uploads/vbcwa62zi 0dr.png
|
Webbrowser
06/02/2011 - General Coding - 13 Replies
Hallo ich hab einen Webbrowser und will da nun so machen dass er die passwörter speichert. Wie geht das?
|
NDS Webbrowser
10/08/2008 - Consoles - 4 Replies
Hallo liebe community
habe da ein kleines Problem
Der nds webbrowser(der richtige) läuft nicht richtig bei meiner supercard da steht immer ich muss ne ram erweiterung in slot 2 reintun aber ich habe keins
da wollt ich fragen ob man nicht die micro sd karte als ram erweiterung benutzen könnte .
Gibt es überhaupt gute homebrew browser für den ds (kein ds organize )
mfg Fatal3ty
|
All times are GMT +1. The time now is 21:38.
|
|