使用 selenium IDE 从 javascript 代码中查找字符串

Find string from javascript code with selenium IDE

我正在测试网页,我需要在 javascript 代码中断言代码片段,例如

<script type="text/javascript" src="//img.xxxx.com/u/14/p42449.js"></script>
<script type="text/javascript">
window.ptag_params = {
zone: "homepage",
customerId: "Your customer ID",
siteType: "Site Type",
};
</script>

我试过使用

<tr>
<td>verifyHtmlSource</td>
<td>*42449*</td>
<td></td>
</tr>

但我没有看到任何响应,仅在日志中

[info] Executing: |verifyHtmlSource | *42449* | | 

我做错了什么???

您在那里使用的 selenium 命令并不是真正适合您要执行的操作的最佳命令。所有要做的就是检查页面的整个 html 中的某处是否出现了数字 42449,但不能保证它会在您要查看的脚本片段中找到它。关于日志,您不会看到比使用验证命令在日志中看到的输出更多的输出,因为它只会通过或失败,具体取决于它是否找到该数字。

如果您需要确认此元素存在并希望在日志中看到一些包含它的输出,您最好的选择是将 verifyelement 和 storeelement 结合使用 下面的示例

脚本

<tr>
    <td>verifyAttribute</td>
    <td>css=script@src</td>
    <td>*42449.js</td>
</tr>
<tr>
    <td>storeAttribute</td>
    <td>css=script@src</td>
    <td>source</td>
</tr>
<tr>
    <td>echo</td>
    <td>${source}</td>
    <td></td>
</tr>

日志输出

[info] Playing test case Untitled
[info] Executing: |verifyAttribute | css=script@src | *42449.js |
[info] Executing: |storeAttribute | css=script@src | source |
[info] Executing: |echo | ${source} | |
[info] echo: //img.xxxx.com/u/14/p42449.js
[info] Test case passed 

您唯一需要注意的是,如果您的页面上有多个脚本标记,如果它是第二个或第三个脚本等,您只需要用第 n 个值修改定位器。

上面的代码看起来不错,但由于它不是基于 css,因此与顺序无关紧要。

<tr>
    <td>verifyElementPresent</td>
    <td>//script[contains(@src, 'p42449.js')]</td>
    <td>*ga.js</td>
</tr>
<tr>
    <td>storeAttribute</td>
    <td>//script[contains(@src, 'p42449.js')]@src</td>
    <td>source</td>
</tr>
<tr>
    <td>echo</td>
    <td>${source}</td>
    <td></td>
</tr>

终于,我用了

<tr>
    <td>storeHtmlSource</td>
    <td>buscaPixelesVen</td>
    <td></td>
</tr>
<tr>
    <td>verifyEval</td>
    <td>javascript{storedVars['buscaPixelesVen'].indexOf(&quot;42449&quot;,0)&gt;0}</td>
    <td>true</td>
</tr>

并且有效。也许不是最好的解决方案,但已经足够了。

无论如何谢谢