Selenium IDE と XML ペイロードを使用して、サーバーに対して単一の HTTPS POST を実行したいと考えています。私がやり取りしているサービスは、HTTPS GET をサポートしていないか、そのようにします。(URL全体がSelenium openコマンドに入るため、HTTPS GETを実行するのは非常に簡単です。)curlなどのHTTP POSTを実行する方法が他にもあることは知っていますが、私のWebテストは現在Selenium IDEで行われており、そうではありませんテストを行うために 2 つまたは 3 つの異なるツールについて心配する必要があります。
Javascript による POST 送信を調べ、そこで見つけたコードを修正しました。Selenium IDEのstoreEvalコマンドとして入れました。コードの最終バージョンは次のとおりです。
var method = method || "post";
var path = "https://service.url.srv/";
var post = "<xml>payload</xml>";
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "");
hiddenField.setAttribute("value", post);
form.appendChild(hiddenField); form.submit();
サンプル コードのわずかに変更されたバージョンを実行すると、Selenium IDE ログに「document.body is undefined」というメッセージが表示されました。単純なフォーム オブジェクトだけで十分であることを期待して、document.body へのすべての参照を削除しようとしました。そうではありませんでした。「form.submit は関数ではありません」というメッセージが表示されました。おそらく、動作するJavascriptのモジョがいくつかあります。
誰かがSelenium IDEでHTTP POSTを実行しようとしているGoogleまたはStackOverflowに関する参照は見つかりませんでした。POST が可能であれば、Selenium の拡張機能を書きたいと思っています。