Skybound.Gecko Mach mir Probleme bei einigen Befehlen
Ich bin noch neu und habe also noch nicht fiel Erfahrung
vorher habet ich bei Visual Basic 2010 das mit den internen WebBrowser1 gemacht aber der nimmt ja immer den IE das wollen ja fiele wie ich auch selber nicht benutzen
des wegen habe ich mir das Skybound.Gecko besorgt und eingebaut nur jest gehen einige befehle nicht mehr
wie zum Beispiel
Fehler 11 Der Wert vom Typ "String" kann nicht in "Skybound.Gecko.GeckoNode" konvertiert werden.
Fehler 12 "ReadyState" ist kein Member von "Skybound.Gecko.GeckoWebBrowser"
Fehler 13 "Forms" ist kein Member von "Skybound.Gecko.GeckoDocument".
vorher habet ich bei Visual Basic 2010 das mit den internen WebBrowser1 gemacht aber der nimmt ja immer den IE das wollen ja fiele wie ich auch selber nicht benutzen
des wegen habe ich mir das Skybound.Gecko besorgt und eingebaut nur jest gehen einige befehle nicht mehr
wie zum Beispiel
GeckoWebBrowser1.Document.GetElementsByTagName("a")(44).InvokeMember("click")
Do While GeckoWebBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Loop
Fehler 12 "ReadyState" ist kein Member von "Skybound.Gecko.GeckoWebBrowser"
GeckoWebBrowser1.Document.Forms(1).InvokeMember("submit")
Fehler 13 "Forms" ist kein Member von "Skybound.Gecko.GeckoDocument".
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248624
Url: https://administrator.de/contentid/248624
Ausgedruckt am: 24.11.2024 um 09:11 Uhr
13 Kommentare
Neuester Kommentar
Moin soritose,
naja so einfach migrieren kannst du das nicht. Das ist ja eine andere Bibliothek die eben anders gehandhabt werden will.
Also als erstes besorge dir die aktuellste Version von GeckoFX hier:
https://bitbucket.org/geckofx/geckofx-29.0/downloads
Und den dazu passenden XULRunner:
http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/29.0b9/runtim ...
den alten Skybound nimmst du als erstes aus deinem Projekt wieder raus und bindest den neuen ein. In den alten Versionen fehlen nämlich so einige Dinge.
Für die neunen Gecko-Versionen bindest du das Control wie beim alten in deine Toolbox ein, und zusätzlich fügst du unter Referenzen in deinem Projekt die Geckofx-Core.dll hinzu.
wenn du das gemacht hast, lauten die Befehle wie folgt:
Der Browser hat selber EventHandler die feuern wenn das Dokument geladen ist:
Und zu guter letzt das übermitteln einer Form:
Grüße Uwe
naja so einfach migrieren kannst du das nicht. Das ist ja eine andere Bibliothek die eben anders gehandhabt werden will.
Also als erstes besorge dir die aktuellste Version von GeckoFX hier:
https://bitbucket.org/geckofx/geckofx-29.0/downloads
Und den dazu passenden XULRunner:
http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/29.0b9/runtim ...
den alten Skybound nimmst du als erstes aus deinem Projekt wieder raus und bindest den neuen ein. In den alten Versionen fehlen nämlich so einige Dinge.
Für die neunen Gecko-Versionen bindest du das Control wie beim alten in deine Toolbox ein, und zusätzlich fügst du unter Referenzen in deinem Projekt die Geckofx-Core.dll hinzu.
wenn du das gemacht hast, lauten die Befehle wie folgt:
GeckoWebBrowser1.Document.GetElementsByTagName("a")(44).Click()
Der Browser hat selber EventHandler die feuern wenn das Dokument geladen ist:
Private Sub GeckoWebBrowser1_DOMContentLoaded(sender As Object, e As Gecko.DomEventArgs) Handles GeckoWebBrowser1.DOMContentLoaded
GeckoWebBrowser1.Document.GetElementsByTagName("a")(44).Click()
End Sub
Und zu guter letzt das übermitteln einer Form:
CType(GeckoWebbrowser1.Document.Forms(1), Gecko.DOM.GeckoFormElement).submit()
Grüße Uwe
Zitat von @soritose:
bis jest bekomme ich auch alles hin nur das nicht er soll den
GeckoWebBrowser1.Document.GetElementById("username").InnerHtml = username.Text
ist das ein Form-Element bzw. ein Textfeld das du füllen möchtest ?bis jest bekomme ich auch alles hin nur das nicht er soll den
GeckoWebBrowser1.Document.GetElementById("username").InnerHtml = username.Text
dann machst du es wie oben im letzen Teil beschrieben mit CType , oder so:
Dim username_node As Gecko.DOM.GeckoInputElement = GeckoWebBrowser1.Document.GetElementById("username")
username_node.Value = username.Text
hier läuft das einwandfrei, dann findet dein Script kein Element mit dem Namen username oder es ist kein Input-Element, kann ich leider mangels HTML-Quelltext nicht sehen ...
Die entspechende CType-Variante sieht so aus:
auch die läuft hier einwandfrei. Also ohne HTML-Quelltext kann ich dir hier leider nicht weiterhelfen.
Die entspechende CType-Variante sieht so aus:
CType(GeckoWebBrowser1.Document.GetElementById("username"), Gecko.DOM.GeckoInputElement).Value = My.Settings.Username
mit den CType kommt das kliche aber wie kann es sein das es bei den normalen WebBrowser1 alles ging und jest soll es das nicht mehr geben
wie schon gesagt ist das eine ganze andere Bibliothek als die des InternetExplorer !!!!!! Die Programmieranforderungen sind je nach Bibliothek unterschiedlich, das ist vollkommen normal...<INPUT name="username">
Da haben wir doch schon den Übelltäter, der Input hat keine ID sondern nur einen Namen - du musst hier also mit GetElementsByName arbeiten, das ganze würde dann so aussehen (wenn es das erste Element mit dem Namen username im Dokument ist):CType(GeckoWebBrowser1.Document.GetElementsByName("username")(0), Gecko.DOM.GeckoInputElement).Value = My.Settings.Username
p.s. dein Visual Studio bietet Debugging-Funktionen mit denen du schön sehen kannst ob einem Objekt ein Wert zugewiesen wurde oder nicht. Hilft ungemein beim Entwickeln und solltest du dich unbedingt mit beschäftigen.
um z.B. den 4 Eintrag als ausgewählt zu setzen:
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.
Dim lang_select As Gecko.DOM.GeckoSelectElement = GeckoWebBrowser1.Document.GetElementsByName("language")(0)
lang_select.Options.item(3).Selected = True
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.