【发布时间】:2011-10-06 14:08:24
【问题描述】:
selenium 中的 runScript 命令真的很有用,我用它来汇总表中的值,然后像这样存储值
<tr>
<td>runScript</td>
<td>var cumulative = 0.0; $('table.quote-review-group-component').eq(0).find('tr').each( function( i,el ){var singleStackTotal = $(el).find('td').eq(4).html();if( singleStackTotal ){cumulative += parseFloat( singleStackTotal.substring(1) );} }); cumulative = cumulative.toFixed(2)</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>selenium.browserbot.getUserWindow().cumulative</td>
<td>cumulative</td>
</tr>
<tr>
<td>echo</td>
<td>${cumulative}</td>
<td></td>
</tr>
<tr>
<td>verifyEquals</td>
<td>£${cumulative}</td>
<td>${total}</td>
</tr>
理想情况下,我希望能够指向外部 js 文件,而不是将命令中的 javascript 作为字符串,这样我就可以加载一些测试函数并使用 storeEval 来获取函数的返回
所以我们有
<tr>
<td>runExternalScript</td>
<td>/path/to/external/extra-tests.js</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>selenium.browserbot.getUserWindow().getCumulative(0)</td>
<td>cumulative0</td>
</tr>
<tr>
<td>verifyEquals</td>
<td>£${cumulative}</td>
<td>${total}</td>
</tr>
外部脚本看起来像这样
function checkSingleGroupListTotal( index ){
if ( index == "undefined" ){
index = 0;
}
var cumulative = 0.0;
$('table.quote-review-group-component').eq(index).find('tr').each( function( i,el ){
var singleStackTotal = $(el).find('td').eq(4).html();
if( singleStackTotal ){
cumulative += parseFloat( singleStackTotal.substring(1) );
}
});
return cumulative.toFixed(2);
}
考虑一个插件,它添加一个 loadScript 动作来检查外部 js 文件,然后将文件内容传递给 runScript 就可以完成这项工作。但我不想重新发明轮子,而且我之前从未构建过插件。
【问题讨论】:
标签: javascript selenium automated-tests selenium-rc selenium-ide