1

每当用户单击 Selenium IDE 中的播放按钮时,我想触发 Ajax 调用。jQuery $.ajax 函数会更好。有没有办法做到这一点?

在网上搜索了 20 分钟后,我还没有找到任何人试图这样做。

4

1 回答 1

2

您可以使用评估 JavaScript 代码的 Selenium 命令之一。例如,该waitForCondition命令执行 JavaScript 片段,直到最后一个表达式的计算结果为真。请注意,如果您的测试页面已经有 jQuery,您可以跳过前两部分。

将 jQuery 库加载到页面中

JavaScript 片段

(function(window) {
    var script = window.document.createElement("script");
    script.src = "http://code.jquery.com/jquery-1.9.1.min.js";
    script.type = "text/javascript";
    window.document.getElementsByTagName("head")[0].appendChild(script);
})(selenium.browserbot.getUserWindow());
1 == 1; // put something that evaluates to "true" here to make sure that our code runs only once

硒命令

<!--Inject jQuery-->
<tr>
    <td>waitForCondition</td>
    <td>(function(window) { var script = window.document.createElement(&quot;script&quot;); script.src = &quot;http://code.jquery.com/jquery-1.9.1.min.js&quot;; script.type = &quot;text/javascript&quot;; window.document.getElementsByTagName(&quot;head&quot;)[0].appendChild(script); })(selenium.browserbot.getUserWindow()); 1==1;</td>
    <td>1000</td>
</tr>

验证 jQuery 是否已下载并可以使用

JavaScript 片段

typeof selenium.browserbot.getUserWindow().jQuery == 'function'

硒命令

<!--Validate jQuery-->
<tr>
    <td>waitForCondition</td>
    <td>typeof selenium.browserbot.getUserWindow().jQuery == 'function'</td>
    <td>60000</td>
</tr>

进行 ajax 调用

JavaScript 片段

(function(window) {
    window.jQuery.ajax('http://www.google.co.uk/search?q=jquery');
})(selenium.browserbot.getUserWindow());
1 == 1;

硒命令

<!--Make an AJAX call-->
<tr>
    <td>waitForCondition</td>
    <td>(function(window) {window.jQuery.ajax('http://www.google.co.uk/search?q=jquery'); })(selenium.browserbot.getUserWindow()); 1 == 1;</td>
    <td>1000</td>
</tr>
于 2013-05-10T12:11:17.757 回答