Ich entwickle einen Web-Bot mit dem WinForms WebBrowser-Steuerelement. Alles funktioniert gut außer dem zweiten click()
Aufruf im folgenden Code:
saveLink
ist nicht null. Ich weiß das, weil ich einen alert()
Aufruf innerhalb der Bedingung platziert habe.
Aktualisierter Code mit vorgeschlagenen Lösungen
%Vor% Aber immer noch das gleiche Problem. 'alert ()' funktioniert gut, aber html()
zeigt inneren Text anstelle von HTML des Ankers.
HTML-Code
%Vor% ID
des Anker-Tags wird dynamisch generiert.
Außerdem wird click()
ausgelöst, wenn derselbe Code von der Google Chrome-Konsole aus ausgeführt wird. Könnte es also das Problem mit dem WebBrowser-Steuerelement sein?
Aktualisieren
Ich denke, es ist ein Problem mit dem Webbrowser-Steuerelement, das Internet Explorer erbt. Jetzt wechsle ich zu einer anderen Browsersteuerung und teste den Code darauf. Lass dich wissen, ob es dort funktioniert.
Vielen Dank für Ihre Antworten und Kommentare.
Nachdem ich eine Woche lang die Website von Dritten recherchiert habe, habe ich heute endlich die Lösung für mein Problem gefunden. Eigentlich war das Problem nicht mit JavaScript oder HTML, sondern mit der Art, wie die Webseite das Formular validiert, das ich mit meinem Bot automatisch ausfüllen möchte.
Ich habe der Antwort Kopfgeld gegeben, deren Konversation in Kommentaren mir einige Hinweise gegeben hat.
Der Klick auf saveLink
wurde nicht ausgelöst, weil ich den Wert eines Textfelds mit .val()
programmiert hatte, aber aus irgendeinem Grund hat die Website keine Werte gespeichert, die direkt mit dieser Funktion eingestellt wurden. Aber wenn ich den Wert mithilfe eines Kombinationsfelds änderte, das den Wert für das Textfeld vom Server lädt (Obwohl der vom Server festgelegte Wert oder die val()
-Funktion genau gleich sind.), Wurde der Klick danach erfolgreich ausgeführt.
Ich habe auch setTimeout()
an verschiedenen Stellen verwendet, weil der Code zu schnell ausgeführt wurde, bevor der Wert in einigen Formularfeldern gesetzt werden konnte.
Wenn Sie in Zukunft ein ähnliches Problem haben, sollten Sie das Verhalten der Seite oder des Formulars, das Sie übermitteln möchten, genau studieren.
Probieren Sie mit der Bedingung Below:
aus%Vor%
trigger('click')
stattclick
- Ändern Sie die Validierung der if-Bedingung mit
if(saveLink)
.Its validiert sowohlnull,undefined
all false statement- Rückgabe mit
number=> 0
anstelle vonsting =>'0'
anchor
-Tag-Umleitung verwenden Sie mitwindow.location.href
und erhalten Sie denhref
-Wert von anchor try mitattr('href')
Arbeitsbeispiel
savelink sollte ein dom-Element für die Nullprüfung sein
%Vor%oder
%Vor%oder
%Vor%Ich habe es nicht verstanden Müssen Sie klicken oder Funktion in den Klick hinzufügen?
Funktion hinzufügen:
%Vor%Klicken Sie auf
%Vor%Der beste Weg, um eine Veranstaltung von JavaScript zu feuern
%Vor%Ich hoffe, es wird für Sie funktionieren.
Ihr aktualisierter Code mit vorgeschlagenen Lösungen ist gut, aber die Methode .html()
erhält den Inhalt eines HTML-Elements. Daher müssen Sie saveLink.parent().html()
verwenden, um das äußere HTML des Ankers zu erhalten.
Wenn andere Elemente im übergeordneten Container vorhanden sind, können Sie ein temporäres Element erstellen, um nur hiperlink HTML zu erhalten:
Um auf saveLink mit Javascript zu klicken, versuchen Sie x.find('a')[0].click()
anstelle von saveLink.click()
zu verwenden.
Ich habe die URL Ihres Profils im Attribut href
für visuelle Klarheit verwendet. Wenn Sie das unten stehende Snippet ausführen, wird ein Nutzerklick auf den Link simuliert und Ihre Profilseite wird angezeigt.
Denken Sie daran, dass javascript und javascript Frameworks ereignisgesteuert sind. Versuchen Sie also nicht, die funktionalen Programmierkonzepte zu implementieren.
%Vor%Was meine Theorie darüber ist, dass die Klickfunktion nicht wirklich an das Element gebunden war. Dies kann daran liegen, dass der HTML-Code noch nicht auf der Seite war, als das Skript oder die Bindung von click ausgeführt wurde. Überprüfe den gebundenen Klick in saveLink.click ();
versuche es im Format
$(body).delegate(saveLink, 'click', function() {
//try alert here to check
});
Tags und Links javascript .net c# jquery winforms