【发布时间】:2012-08-13 06:54:21
【问题描述】:
我想使用带有 XML 有效负载的 Selenium IDE 向服务器执行单个 HTTPS POST。我正在与之交互的服务不支持 HTTPS GET,否则我会这样做。 (做一个 HTTPS GET 真的很容易,因为整个 URL 都进入了 Selenium open 命令。)我知道还有其他方法可以做 HTTP POST,比如 curl,但我的 web 测试目前在Selenium IDE 和我不想担心两个或三个不同的工具来进行我的测试。
我查看了POST submission by Javascript 并修改了在那里找到的代码。我把它作为一个 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 编写扩展。
【问题讨论】:
标签: javascript web-services testing selenium https