Gibt es eine Möglichkeit, mit einer POST-Anfrage mit Selenium zu beginnen?
Ich versuche zu starten, einen Selenium-test mit einem POST-request an meine Anwendung.
Anstelle einer einfachen open(/startpoint)
Ich würde gerne etwas tun, wie open(/startpoint, stuff=foo,stuff2=bar)
Gibt es eine Möglichkeit, das zu tun?
Ich diese Frage, weil die original-Seite, die Beiträge zu diesem start-Zeitpunkt hängt von externen Anbietern, die Häufig offline (Entwicklungsumgebung) und so wird oft nicht zu früh (und sind nicht Gegenstand der Prüfung)
Ich denke, das senden der Daten so BEKOMMEN, würde auch funktionieren. Ich würde lieber nur mit einem POST-Methode.
InformationsquelleAutor der Frage Romuald Brunet | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: Nein.
Aber Sie könnten in der Lage sein, es zu tun mit etwas filthing. Wenn Sie öffnen Sie eine test-Seite (mit GET), dann bewerten Sie JavaScript auf dieser Seite sollten Sie in der Lage sein zu replizieren, die eine POST-Anfrage. Sehen JavaScript post-request (z.B. ein Formular Absenden zu sehen, wie Sie replizieren kann, ein POST-request in JavaScript.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Tnem
Wenn Sie mit Python
selenium
Bindungen, heutzutage gibt es eine Erweiterungselenium
-Selen-Anfragen
:Beispiel:
InformationsquelleAutor der Antwort alecxe
Selenium IDE können Sie Javascript ausführen mit storeEval Befehl. Oben genannten Lösung funktioniert gut, wenn Sie die test-Seite (HTML nicht XML -) und Sie ausführen müssen, nur POST-Anforderung.
Wenn Sie brauchen, um POST/PUT/DELETE oder jede andere Anfrage, dann müssen Sie einen anderen Ansatz:
XMLHttpRequest!
Beispiel nachfolgend wurde getestet - alle Methoden (POST/PUT/DELETE) funktionieren problemlos.
Klarstellung:
${requestParams} - Parameter, die Sie posten möchten (z.B. param1=value1¶m2=value3¶m1=value3)
Sie können angeben, wie viele Parameter ein, wie Sie benötigen
${"targetUrl"} - Pfad zum script (wenn Ihr Seite befindet sich im http://domain.com/application/update.php dann targetUrl sollte gleich /application/update.php)
${requestMethod} - Methode geben (in diesem speziellen Fall sollte es "POST", können aber "PUT" oder "DELETE" oder andere)
InformationsquelleAutor der Antwort AlexG
Selen derzeit nicht bieten-API für diese, aber es gibt mehrere Möglichkeiten zum starten eines HTTP-request in Ihrem test. Es kommt nur darauf an, welche Sprache Sie schreiben.
In Java zum Beispiel, könnte es wie folgt Aussehen:
InformationsquelleAutor der Antwort Pat Meeker
Ein sehr praktischer Weg, dies zu tun ist, erstellen Sie ein dummy-Startseite für die tests, das ist einfach ein form mit POST, hat einen einzigen "test starten" - button und ein paar
<input type="hidden"
... Elemente mit den entsprechenden post-Daten.Beispielsweise könnten Sie eine
SeleniumTestStart.html
Seite mit diesen Inhalten:In diesem Beispiel index.php wo ist Ihr normaler web-app befindet.
Selen-code am Anfang des tests würde dann gehören:
Dies ist sehr ähnlich zu anderen mock und stub-Techniken, die in die automatisierte Prüfung. Sie sind nur spöttisch den Einstieg in die web app.
Offensichtlich gibt es einige Einschränkungen für diesen Ansatz:
Bitte Lesen Sie meinen Artikel über die Eigenschaften eines Idealen Test
InformationsquelleAutor der Antwort Mishkin Berteig - Agile Coach
Gut, ich bin einverstanden mit der @Mishkin Berteig - Agile Coach beantworten. Mit der form ist die schnelle Art und Weise zu verwenden, die die POST bietet.
Trotzdem sehe ich einige erwähnen, die javascript, aber kein code. Ich habe für meine eigenen Bedürfnisse, beinhaltet jquery für einfache POST plus andere.
Grundsätzlich mit der
driver.execute_script()
Sie senden können javascript inklusive Ajax-Abfragen.InformationsquelleAutor der Antwort erm3nda