Formular in Webbroser ausfüllen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Formular in Webbroser ausfüllen

    Ich benötige Hilfe ein Testsystem für einen WebApplication zu entwickeln.

    Dabei sollen die verschiedensten Web-Formulare automatisch gefüllt und abgesendet werden. Dabei soll nicht nur der IE getestet sondern auch Firefox und Chrome.

    Den IE kann ich mit dem WebBrowser-Steuerelement problemlos testen. Aber wie geht es mit den beiden anderen?

    Mit Process bekomme ich die WebSeite angezeigt, aber wie kann man dann das Formular füllen und absenden?

    VB.NET-Quellcode

    1. Dim ptest as New Process
    2. ptest.StartInfo.FileName = "firefox.exe"
    3. ptest.StartInfo.Arguments() = Chr(34) & "http:/webseite.tld/irgendwas.html" & Chr(34)
    4. ptest.Start()


    Für jede weiterführende Idee bin ich dankbar.

    INOPIAE
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Es soll ja Seiten geben, die nicht automatisch ausgefüllt werden wollen. Da ist dann so ein Bildchen mit verschwommenen Zeichen oder so, die sich einer OCR-Software entziehen.
    Diese Seiten müssen von Hand ausgefüllt werden.
    Was für Seiten willst Du denn mit einem Automaten ausfüllen?
    Bist Du ein Spammer?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du sprichst von 2 verschiedenen Dingen. Beim WebBrowser-Control wird der Browser in dein Programm integriert und kann ziemlich einfach angesprochen werden. Wenn Firefox startest ist dies nicht mehr so einfach möglich, weils eine externe Anwendung ist. Was willst du also, soll der Browser im Programm integriert sein oder extern? Weil ebenso wie das IE WebBrowser Control gibt es das Firefox WebBrowser Control (GeckoFX) und auch die WebKit Engine welche von Chrome genutzt wird. Dies lässt sich alles in dein Programm integrieren. Es wäre die aufjedenfall die einfachste Möglichkeit auf die InputFelder einer Webseite zuzugreifen. Mit einem externen PRogramm muss man viel mit APIs rumhantieren und ist somit sehr Fehleranfällig.

    Eine andere Lösung wäre ggf. gar nicht die Webseite anzeigen zu lassen, sondern den Request, welchen eine HTML Form abschickt, direkt an das entsprechende Script zu schicken, dies geht über den HttpWebRequest z.B.
    Wie gesagt, es geht darum eine WebApplikation zu testen und nicht zu spamen.

    Es wird auch kein Captcha-Hack gesucht, sondern es soll nur ein Webformular per Code gefüllt und abgesendet werden. Dabei sollen dann verschiedenste Eingabevarianten gestestet werden, um Fehler zu finden. Da kann ein Test schon einmal aus über 200 mal Füllen des Formulars bestehen. Deshalb möchte ich dies automatisieren.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Problem mit Gecko

    Wenn ich mit dem geckoBrowser arbeite, bekomme ich bei dieser Code-Zeile den nachfolgenden Fehler:

    VB.NET-Quellcode

    1. Dim path As String = Application.StartupPath & "\xulrunner\bin"
    2. Skybound.Gecko.Xpcom.Initialize(path)


    System.InvalidCastException: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Skybound.Gecko.nsInterfaces" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{A88E5A60-205A-4BB1-94E1-2628DAF51EAE}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).
    bei Skybound.Gecko.Xpcom.NS_GetComponentManager(nsInterfaces& componentManager)
    bei Skybound.Gecko.Xpcom.Initialize(String binDirectory)
    bei CAcert_Test_User.frmGecko..ctor() in D:\Projects\xxxx\formulare\frmGecko.vb:Zeile 17.



    Hat jemand eine Idee?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).