Selenium IDE позволяет запускать Javascript с помощью команды storeEval . Упомянутое выше решение отлично работает, если у вас есть тестовая страница (HTML, а не XML), и вам нужно выполнить только POST-запрос.
Если вам нужно сделать POST / PUT / DELETE или любой другой запрос, вам понадобится другой подход:
XMLHttpRequest !
Пример, приведенный ниже, был протестирован - все методы (POST / PUT / DELETE) работают нормально.
<!--variables-->
<tr>
<td>store</td>
<td>/your/target/script.php</td>
<td>targetUrl</td>
</tr>
<tr>
<td>store</td>
<td>user=user1&password</td>
<td>requestParams</td>
</tr>
<tr>
<td>store</td>
<td>POST</td>
<td>requestMethod</td>
</tr>
<!--scenario-->
<tr>
<td>storeEval</td>
<td>window.location.host</td>
<td>host</td>
</tr>
<tr>
<td>store</td>
<td>http://${host}</td>
<td>baseUrl</td>
</tr>
<tr>
<td>store</td>
<td>${baseUrl}${targetUrl}</td>
<td>absoluteUrl</td>
</tr>
<tr>
<td>store</td>
<td>${absoluteUrl}?${requestParams}</td>
<td>requestUrl</td>
</tr>
<tr>
<td>storeEval</td>
<td>var method=storedVars['requestMethod']; var url = storedVars['requestUrl']; loadXMLDoc(url, method); function loadXMLDoc(url, method) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { if(xmlhttp.status==200) { alert("Results = " + xmlhttp.responseText);} else { alert("Error!"+ xmlhttp.responseText); }}}; xmlhttp.open(method,url,true); xmlhttp.send(); }</td>
<td></td>
</tr>
Пояснение:
$ { requestParams } - параметры, которые вы хотите опубликовать (например, param1 = value1 & param2 = value3 & param1 = value3)
Вы можете указать столько параметров, сколько вам нужно
$ { targetUrl } - путь к вашему сценарию (если ваша страница расположена по адресу http://domain.com/application/update.php, то targetUrl должен быть равен /application/update.php)
$ { requestMethod } - тип метода (в данном конкретном случае это должен быть «POST», но может быть «PUT» или «DELETE» или любой другой)