VB: WebkitBrowser - nach Element suchen

12/23/2017 20:03 Fox#1
Ich möchte herausfinden ob ein HTML-Element existiert oder nicht. Das ganze soll im WebKitBrowser ablaufen (also nicht im normalen Webbrowser).

Beispiel:

Es soll überprüft werden ob folgendes Element existiert:

HTML Code:
<div class="goog-te-spinner-pos">
Hoffe mir kann wer helfen :D

Danke im Voraus
12/23/2017 23:25 Ludder231#2
Kann man da nicht einfach den Quellcode(HTML) downloaden und nen einfaches .Contains() drauf laufen lassen?
12/24/2017 01:07 Fox#3
Quote:
Originally Posted by Ludder231 View Post
Kann man da nicht einfach den Quellcode(HTML) downloaden und nen einfaches .Contains() drauf laufen lassen?
Ich will jede 60 Sekunden überprüfen ob das Element vorhanden ist^^ sollte ich dann auch jedes mal den quellcode downloaden? :D

kenne mich kaum aus mit vb^^
12/24/2017 15:03 Ludder231#4
Quote:
Originally Posted by Fox View Post
Ich will jede 60 Sekunden überprüfen ob das Element vorhanden ist^^ sollte ich dann auch jedes mal den quellcode downloaden? :D

kenne mich kaum aus mit vb^^
Ich würde es so machen. Allgemein würde ich das sowieso nicht mit dem Browser machen, aber ich weiß ja nicht was du sonst vor hast damit.
Ne andere Idee hab ich jetzt nicht, da ich mich mit den Teil nicht auskenne.
12/24/2017 15:22 Fox#5
Quote:
Originally Posted by Ludder231 View Post
Ich würde es so machen. Allgemein würde ich das sowieso nicht mit dem Browser machen, aber ich weiß ja nicht was du sonst vor hast damit.
Ne andere Idee hab ich jetzt nicht, da ich mich mit den Teil nicht auskenne.
Kannst du mir den Code geben um den Quellcode in einer Textbox abzuspeichern? :rolleyes:
12/24/2017 16:28 Serraniel#6
PHP Code:
rtSource.Text wbBrowser.DocumentText
Am besten im DocumentCompleted Event damit du sichergehen kannst, dass die Seite zuende geladen hat.
12/28/2017 18:58 Fox#7
Quote:
Originally Posted by Serraniel View Post
PHP Code:
rtSource.Text wbBrowser.DocumentText
Am besten im DocumentCompleted Event damit du sichergehen kannst, dass die Seite zuende geladen hat.
Hab da ein Problem:
Die Internetseite von der ich den Quellcode haben will, hat einen div-Container und dieser wird "unsichtbar" wenn er fertig geladen ist. Anschließend erscheint an der Stelle des unsichtbaren div-Container ein neuer div-Container.

VB stellt die Seite als fertig geladen fest, wenn dieser erste DIV-Container unsichtbar wird. Deshalb zeigt bei mit DocumentCompleted Event nicht den zweiten Div-Container im Quellcode an.

Ich hoffe du weißt was ich meine. :rolleyes:
12/28/2017 21:59 Xio.#8
Quote:
Originally Posted by Fox View Post
Hab da ein Problem:
Die Internetseite von der ich den Quellcode haben will, hat einen div-Container und dieser wird "unsichtbar" wenn er fertig geladen ist. Anschließend erscheint an der Stelle des unsichtbaren div-Container ein neuer div-Container.

VB stellt die Seite als fertig geladen fest, wenn dieser erste DIV-Container unsichtbar wird. Deshalb zeigt bei mit DocumentCompleted Event nicht den zweiten Div-Container im Quellcode an.

Ich hoffe du weißt was ich meine. :rolleyes:
HtmlAgilityPack (oder dergleichen) und mehr Erfahrung brauchst du, so wird das nix.
12/29/2017 03:06 Fox#9
Quote:
Originally Posted by Serraniel View Post
PHP Code:
rtSource.Text wbBrowser.DocumentText
Am besten im DocumentCompleted Event damit du sichergehen kannst, dass die Seite zuende geladen hat.
Quote:
Originally Posted by Xio. View Post
HtmlAgilityPack (oder dergleichen) und mehr Erfahrung brauchst du, so wird das nix.
Das was ich meine ist ein sogenannter Preloading content^^
wollte ich nur so am rande sagen :D
12/29/2017 10:27 Serraniel#10
Du meinst das die Seite im HTML nur nen Pre Loader hat und die eigentliche Seite per JS nachgeladen wird und dann ins DOM gepflanzt wird? Dann lad dir doch einfach die HTML Struktur der Sachen rein, die nachgeladen per Javascript, die Quellen findest du ja raus, was das JS nachträglich laden würde bzw. von wo.
01/06/2018 16:14 Fox#11
Quote:
Originally Posted by Serraniel View Post
Du meinst das die Seite im HTML nur nen Pre Loader hat und die eigentliche Seite per JS nachgeladen wird und dann ins DOM gepflanzt wird? Dann lad dir doch einfach die HTML Struktur der Sachen rein, die nachgeladen per Javascript, die Quellen findest du ja raus, was das JS nachträglich laden würde bzw. von wo.
Was meinst du genau mit DOM?
Mit welchem Befehl könnte ich die preloader Sachen den als HTML Struktur herausbekommen? :D

Danke im Voraus
01/06/2018 16:50 0xFADED#12
Guck dir eventuell mal [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] dafür an.

Dein Problem sollte sich damit eig. relativ easy lösen lassen.
Ist zwar leider JavaScript, aber sollte insgesamt einfacher sein.

z.B.:
Code:
var casper = require('casper').create();

casper.test.begin('check that the element exists', function(test) {
    casper.start("http://deine-website.de", function() {
        test.assertExists("div.goog-te-spinner-pos");
    });

    casper.run(function() {
        test.done();
    });
});
Müsstest besagtes Skript dann nur in deinem erwähnten Interval mehrfach ausführen oder mit setInterval/setTimeout rumhantieren.
01/06/2018 19:05 Fox#13
Quote:
Originally Posted by 0xFADED View Post
Guck dir eventuell mal [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] dafür an.

Dein Problem sollte sich damit eig. relativ easy lösen lassen.
Ist zwar leider JavaScript, aber sollte insgesamt einfacher sein.

z.B.:
Code:
var casper = require('casper').create();

casper.test.begin('check that the element exists', function(test) {
    casper.start("http://deine-website.de", function() {
        test.assertExists("div.goog-te-spinner-pos");
    });

    casper.run(function() {
        test.done();
    });
});
Müsstest besagtes Skript dann nur in deinem erwähnten Interval mehrfach ausführen oder mit setInterval/setTimeout rumhantieren.
Muss ich [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] über den Nuget Package Manager installieren?
Ich verwende Visual Basic 2010 und habe jetzt erst mal den Nuget Packager geholt^^
01/06/2018 19:44 Serraniel#14
Quote:
Originally Posted by Fox View Post
Muss ich [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] über den Nuget Package Manager installieren?
Ich verwende Visual Basic 2010 und habe jetzt erst mal den Nuget Packager geholt^^
Nein das waren alternative Vorschläge wie man das per Javascript lösen kann.

Quote:
Originally Posted by Fox View Post
Was meinst du genau mit DOM?
Mit welchem Befehl könnte ich die preloader Sachen den als HTML Struktur herausbekommen? :D

Danke im Voraus
Das DOM ist das Document Object Model. Das ist quasi ein Baumstruktur, auf Basis des HTMLs der Website im Browser, ums sehr kurz zu fassen. Ansonsten einfach mal danach googeln ;)

Mein Fall wäre z. B. das die Website beim Laden nur den Inhalt des PreLoaders hat im HTML Code und etwas Javascript, welches im Hintergrund die eigentliche Website lädt und dann nachträglich in das DOM (also in die HTML Struktur der Website) einfügt. In diesem Fall hast du nach dem Laden der Website im Browser nämlich nur den Ursprungsquelltext direkt. Um welche Seite handelt es sich denn? Die Seite zu kennen würde es hier wahrscheinlich einfacher machen ne hilfreiche Antwort geben zu können :D
01/06/2018 19:49 iMostLiked#15
Schau dir das mal an:

Code:
Dim all As HtmlElementCollection = Browser.Document.All
For Each htmlElement As HtmlElement In all
    If htmlElement.GetAttribute("className") = "goog-te-spinner-pos" Then
        ...
    End If
Next
Liebe Grüße