我想使用带有 XML 有效负载的 Selenium IDE 对服务器执行单个 HTTPS POST。我正在与之交互的服务不支持 HTTPS GET,否则我会这样做。(做一个 HTTPS GET 真的很容易,因为整个 URL 都进入了 Selenium打开命令。)我知道还有其他方法可以做 HTTP POST,比如 curl,但是我的 web 测试目前是在 Selenium IDE 中完成的,我没有希望不必担心两三个不同的工具来做我的测试。
我查看了通过 Javascript 提交的 POST并修改了我在那里找到的代码。我把它作为一个 storeEval 命令放在 Selenium IDE 中。代码的最终版本如下:
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 未定义”。我尝试删除对 document.body 的所有引用,希望一个简单的表单对象本身就足够了。不是。我得到“form.submit 不是函数”。也许有一些 Javascript mojo 会起作用。
我没有在 Google 或 StackOverflow 上找到任何有人试图在 Selenium IDE 中进行 HTTP POST 的参考。如果甚至可以进行 POST,我愿意为 Selenium 编写扩展。