l0b*_*0b0 5 javascript selenium-ide
根据Selenium IDE HTML测试中的JavaScript函数,这应该是可能的:
<tr>
<td>storeEval</td>
<td>function(input) {return input.replace('foo', 'bar');}</td>
<td>replaceText</td>
</tr>
<tr>
<td>storeEval</td>
<td>replaceText('foo')</td>
<td>var</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
相反,我得到以下异常:
function statement requires a name
Run Code Online (Sandbox Code Playgroud)
给它起一个名字后,语句运行:
<tr>
<td>storeEval</td>
<td>function replaceText(input) {return input.replace('foo', 'bar');}</td>
<td>replaceText</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
但是下一行无法找到定义:
replaceText is not defined
Run Code Online (Sandbox Code Playgroud)
我也尝试引用变量而不是函数:
<tr>
<td>storeEval</td>
<td>${replaceText}('foo')</td>
<td>var</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
但是显然它仍然是未定义的:
null is not a function
Run Code Online (Sandbox Code Playgroud)
我也尝试做一个匿名函数:
<tr>
<td>storeEval</td>
<td>(function (input) {return input.replace('foo', 'bar')})</td>
<td>replaceText</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
并用括号运行它:
<tr>
<td>storeEval</td>
<td>(${replaceText})('foo')</td>
<td>var</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
错误:
missing ) in parenthetical
Run Code Online (Sandbox Code Playgroud)
没有:
<tr>
<td>storeEval</td>
<td>${replaceText}('foo')</td>
<td>var</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
错误:
missing ; before statement
Run Code Online (Sandbox Code Playgroud)
您需要的是一个自动执行的匿名函数:
<tr>
<td>storeEval</td>
<td>(function(input) {return input.replace(input, 'bar');})('foo')</td>
<td>replaceText</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以使用变量作为参数:
<tr>
<td>store</td>
<td>'foo'</td>
<td>searchText</td>
</tr>
<tr>
<td>storeEval</td>
<td>(function(input) {return input.replace(input, 'bar');})(${searchText})</td>
<td>replaceText</td>
</tr>
Run Code Online (Sandbox Code Playgroud)