Laden...

Automatisiertes Steuern einer Webseite

Erstellt von programcvb vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.394 Views
P
programcvb Themenstarter:in
2 Beiträge seit 2013
vor 5 Jahren
Automatisiertes Steuern einer Webseite

Hallo,

ich will folgendes machen:
ich will per Konsolenanwendung auf eine Webseite zugreifen, mich einloggen, auf eine Seite der Webseite navigieren und dort einen Button klicken, eine bestimmte Zeit warten, die Seite neu laden und einen anderen Button klicken...und das ganze so lange, bis eine von mir vorgegebene Liste an Aktionen ausgeführt wurde.

Einloggen, die Seite ansteuern, Button klicken, alles bisher kein Problem, ich öffne derzeit einfach über das nuget paket "geckodriver" Firefox, navigiere auf die Seite, lasse meine Logindaten eingeben, gehe auf die Seite drücke den Button.

Nun aber mein Problem: Ich verwende einen System.Timers.Timer von dem ich eine Methode jede Sekunde aufrufen lasse. An die Methode übergebe ich eine DateTime Instanz, die ich in der Methode auf den Zeitpunkt setzen will, an dem das nächste mal ein Button geklickt werden soll. Beim nächsten Aufruf der Methode hat die DateTime Instanz aber nicht mehr den Wert auf den ich sie gesetzt habe, sondern wieder den ursprünglichen Wert mit dem ich sie initial übergeben hatte.

Nun meine beiden Fragen - woran kann das liegen bzw. wie kann ich es schaffen, dass die DateTime Instanz auch beim nächsten Timer Methoden aufruf noch den richtigen Wert enthält?

Und wie ist für so ein Problem die richtige herangehensweise? Kann / Sollte man das ganze anders machen als mit dem geckodriver und einem Timer? Speziell bei der Verwendung des Timers bin ich mir relativ unschlüssig, ob das so best practis ist...

16.842 Beiträge seit 2008
vor 5 Jahren

Du willst also eine Seite missbrauchen, indem Du sie durch einen Bot automatisierst, oder was hast Du vor?
Um welche Seite handelt es sich? Hat diese keine API für das Ansteuern?

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

2 Sachen:

a) Um dir dort zu helfen müsstest du denke ich die relevanten Codestellen preisgeben
b) Viele Leute hier erstellen selbst Websites, die von Bots missbraucht werden, sofern du ernsthaft an Hilfe interessiert bist und nichts für den Betreiber unerwünschtes tust - kann ich dir nur empfehlen die Seite bzw. deren Nutzungsbedingungen zu posten - andernfalls wirst du oft obwohl man dir helfen könnte - keine Hilfe bekommen, da Programme wie deines das Potenzial haben den Betreiber massiv zu belasten und dessen Kosten in die Höhe zu treiben.

Selbst wenn du das tust sei allerdings Folgendes angemerkt: Websites die Funktionalität hinter einer Authentifizierung verstecken - tun dies oft bewusst und bieten (sofern gewünscht) eine Schnittstelle für Programme an, da das automatisierte Zugreifen auf eine grafische Homepage weder klug noch praktisch ist. (In anderen Worten: Es ist höchst unwahrscheinlich, dass der Betreiber einen Zugriff wie den deinen erlaubt)

LG

C
2.122 Beiträge seit 2010
vor 5 Jahren

Ich vermute das Problem hier.

An die Methode übergebe ich eine DateTime Instanz, die ich in der Methode auf den Zeitpunkt setzen will, an dem das nächste mal ein Button geklickt werden soll.

Du hast ein DateTime in Methode A, gibst den in Methode B hinein und änderst ihn dort?
Dann ist nach dem Aufruf von B dieser Wert in A immer noch das was er vorher war. Stichwort wäre ref. Allerdings klingt das eher als sollte dieser DateTime eine Membervariable der Klasse sein. Oder Rückgabewert der Methode.

Ich weiß zwar nicht was der OP mit seiner Aktion bewirken möchte, aber es kann schon normale und legale Anwendungsfällt für sowas geben. Ein mir bekannter Fall ist eine Vereinsverwaltungssoftware in der man Bankdaten auf IBAN umstellen musste oder auch mal hinzukommende Zusatzfelder sinnvoll füllen musste.