|
You last visited: Today at 06:06
Advertisement
Thread.Sleep oder Timer? [C#]
Discussion on Thread.Sleep oder Timer? [C#] within the .NET Languages forum part of the Coders Den category.
01/11/2015, 03:56
|
#1
|
elite*gold: 50
Join Date: Feb 2013
Posts: 925
Received Thanks: 682
|
Thread.Sleep oder Timer? [C#]
Hey,
bin gerade dabei einen Account Creator für Aeriagames zu machen.
Bin schon ziemlich weit, kämpfe aber noch mit einer Kleinigkeit.
So siehts aus wenn ich es starte:
Und so soll es aussehen:
Sobald ich das Programme starte, connectet der Webbrowser, (der erstmal nur zum Testen sichtbar ist), soweit so gut. Allerdings möchte ich gerne auf den "Get Captcha"-Button verzichten, und möchte, dass der Captcha ebenfalls direkt geladen wird.
Habe es so schon probiert, funktioniert allerdings nicht:
PHP Code:
private void Form1_Load(object sender, EventArgs e) { string urlString = "http://www.aeriagames.com/account/signup"; webBrowser1.Navigate(urlString); //+Code für Captcha }
Und zwar, weil die Seite noch nicht ganz geladen ist, wenn er den Captcha laden möchte. Hab dann rumgegoogelt und es mit'm Thread.Sleep probiert, funktioniert allerdings auch nicht, weil der ganze Thread dann ja gefreezt ist.
Und mit dem Timer komm ich nicht ganz so weiter ...
Wollte einfach mal fragen, was ich an dieser Stelle benutzen kann, damit er z.B. erst die Seite zu Ende laden lässt oder einfach 3 Sekunden wartet, bevor er das Captcha abfragt.
|
|
|
01/11/2015, 04:05
|
#2
|
elite*gold: 289
Join Date: Oct 2011
Posts: 543
Received Thanks: 28
|
Warum das ganze nun über das WebBrowser-Control läuft ist mir schleierhaft, du kannst auch ein WebRequest nehmen, ist nicht nur von der Perfomance besser  .
Um auf deine Frage zu antworten, es gibt ein Event, welches überprüft ob die Website im Control vollständig geladen wurde, wenn ja, dann erst das gewünschte auslesen lassen.
|
|
|
01/11/2015, 12:38
|
#3
|
elite*gold: 317
Join Date: Feb 2012
Posts: 2,089
Received Thanks: 882
|
Ich weiß nicht genau, was du als Browser/Webdriver benutzt, ich gehe mal von Selenium oä. aus...
Normalerweise sollte bei Navigate schon automatisch gewartet werden, bis die Seite vollständig geladen wurde.
Ansonsten kannst du auch irgendwo ne Option setzen, dass bis zu x Sekunden gewartet werden soll, wenn ein Element angesprochen wird, das (noch) nicht verfügbar ist.
Das Captcha sollte aber auch einfach mit nem RegEx aus dem Quellcode herauszuholen sein.
Nebenbei würde ich es auch erst mal mit nem WebRequest, bzw. besser: HttpClient, weil der Async benutzt werden kann, versuchen.
Edit: Nvm, ist ja nur ne ganz normale Webbrowser Control...
|
|
|
01/11/2015, 12:55
|
#4
|
elite*gold: 50
Join Date: Feb 2013
Posts: 925
Received Thanks: 682
|
Quote:
Originally Posted by D3luxe.
Ich weiß nicht genau, was du als Browser/Webdriver benutzt, ich gehe mal von Selenium oä. aus...
Normalerweise sollte bei Navigate schon automatisch gewartet werden, bis die Seite vollständig geladen wurde.
Ansonsten kannst du auch irgendwo ne Option setzen, dass bis zu x Sekunden gewartet werden soll, wenn ein Element angesprochen wird, das (noch) nicht verfügbar ist.
Das Captcha sollte aber auch einfach mit nem RegEx aus dem Quellcode herauszuholen sein.
Nebenbei würde ich es auch erst mal mit nem WebRequest, bzw. besser: HttpClient, weil der Async benutzt werden kann, versuchen.
|
ehm, das geht ein wenig über meine möglichkeiten D:
das programm an sich funktioniert ja auch schon, also das captcha, die eingabe von username und pw, der submit button.
nur weiß ich noch nicht was ich dafür einsetzen soll. habe es eben mit dem WebBrowserDocumentCompletedEvent probiert, aber klappt noch nicht ._.
Weiß jemand warum?
PHP Code:
public Form1()
{
InitializeComponent();
Main();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void Main()
{
string urlString = "http://www.aeriagames.com/account/signup";
webBrowser1.Navigate(urlString);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
>Code für Captcha<
}
}
|
|
|
01/11/2015, 14:01
|
#5
|
elite*gold: 317
Join Date: Feb 2012
Posts: 2,089
Received Thanks: 882
|
Es wäre mal interessant zu sehen, wie du an das Captcha kommst.
Das ist nämlich per iframe in die Seite eingebunden.
PHP Code:
<iframe src="https://www.google.com/recaptcha/api/noscript?k=6LcR-MUSAAAAAODqgJEVRJl-lPlhEfZqxaEzRgRq" height="300" width="500" frameborder="0"></iframe>
Es ist mir schleierhaft, wie du das Ganze mit einer WebBrowser Control bewerkstelligen willst^^ Aber ich lasse mich gerne belehren.
Ich meine, mit HttpClient wäre das kein Problem, weil du automatisch die selben Cookies etc. hast.
Das mit dem DocumentCompleted Event funktioniert zumindest, habe es eben ausprobiert. Die Seite ist komplett geladen, du kannst dir den Source Code zur Überprüfung mit
PHP Code:
File.WriteAllText("source.txt", webBrowser1.DocumentText);
ausgeben lassen.
|
|
|
01/11/2015, 14:10
|
#6
|
elite*gold: 50
Join Date: Feb 2013
Posts: 925
Received Thanks: 682
|
Quote:
Originally Posted by D3luxe.
Es wäre mal interessant zu sehen, wie du an das Captcha kommst.
Das ist nämlich per iframe in die Seite eingebunden.
PHP Code:
<iframe src="https://www.google.com/recaptcha/api/noscript?k=6LcR-MUSAAAAAODqgJEVRJl-lPlhEfZqxaEzRgRq" height="300" width="500" frameborder="0"></iframe>
Es ist mir schleierhaft, wie du das Ganze mit einer WebBrowser Control bewerkstelligen willst^^ Aber ich lasse mich gerne belehren.
Ich meine, mit HttpClient wäre das kein Problem, weil du automatisch die selben Cookies etc. hast.
Das mit dem DocumentCompleted Event funktioniert zumindest, habe es eben ausprobiert. Die Seite ist komplett geladen, du kannst dir den Source Code zur Überprüfung mit
PHP Code:
File.WriteAllText("source.txt", webBrowser1.DocumentText);
ausgeben lassen.
|
pn'd bezüglich des captcha's.
probiere das ganze dann mal übern httpclient, mal schauen wie weit ich komme.
|
|
|
01/12/2015, 00:42
|
#7
|
elite*gold: 0
Join Date: Aug 2005
Posts: 80
Received Thanks: 13
|
Hier habe ich dir mal ein Projekt gemacht wo du Beispielhaft siehst wie es mit einer WebBrowser Komponente geht.
Exceptionhandling habe ich aber jetzt nicht mit eingebaut, das kannst du ja dann noch machen und die Nutzereingaben überprüfen.
Bild
|
|
|
Similar Threads
|
[C#]Timer in einem Thread verwenden
03/16/2014 - .NET Languages - 5 Replies
Hey,
ich habe ein kleines Problem, ich möchte einen Timer in einem neuen Thread verwenden, jedoch geht es mit timer1.Start(); nicht, der Timer startet nicht. Gibt es dafür eine Lösung ?
|
[?] Timer oder Background Worker? [VB.net]
10/27/2012 - .NET Languages - 4 Replies
Heyho liebe Coder Community,
Was lohnt sich mehr bei mehrfachen HttpWebRequests und Regex Splittings,
der Timer oder der Backgroundworker mit einem Loop?
lg
|
Job Timer (Taxi Timer, etc)
09/01/2011 - SRO Hacks, Bots, Cheats & Exploits - 2 Replies
A small utility to keep track of jobs that need timing.
http://img834.imageshack.us/img834/6076/jt01.png
Always read the changelog!
To get access to Job Timer, register at "www.error- soft.net" ( without the spaces between the - )
Press thanks if this helps at all.
|
All times are GMT +2. The time now is 06:07.
|
|