Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Selenium IDE中创建自定义函数?_Javascript_Selenium Ide - Fatal编程技术网

Javascript 如何在Selenium IDE中创建自定义函数?

Javascript 如何在Selenium IDE中创建自定义函数?,javascript,selenium-ide,Javascript,Selenium Ide,这应根据以下条件实现: 为其命名后,语句将运行: <tr> <td>storeEval</td> <td>function replaceText(input) {return input.replace('foo', 'bar');}</td> <td>replaceText</td> </tr> 我还尝试引用变量而不是函数: <tr> <td&g

这应根据以下条件实现:

为其命名后,语句将运行:

<tr>
    <td>storeEval</td>
    <td>function replaceText(input) {return input.replace('foo', 'bar');}</td>
    <td>replaceText</td>
</tr>
我还尝试引用变量而不是函数:

<tr>
    <td>storeEval</td>
    <td>${replaceText}('foo')</td>
    <td>var</td>
</tr>
我还试着做了一个:

没有:

您需要的是:


仓库
(函数(输入){return input.replace(输入,'bar');})('foo')
替换文本
请注意,您也可以将变量用作参数:

<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>

商店
“福”
搜索文本
仓库
(函数(输入){return input.replace(输入,'bar');})(${searchText})
替换文本

我在上面进行了测试,但在参数列表之后出现了一个错误“[error]引发了一个异常:丢失)” 因此,我将“${searchText}”更改为“storedVars['searchText']”,没关系:)

ps:JavaScript可以与两种类型的Selenese参数一起使用:脚本和非脚本(通常是表达式)。在大多数情况下,您需要访问和/或操作用作Selenese参数的JavaScript代码段内的测试用例变量。在测试用例中创建的所有变量都存储在JavaScript关联数组中。关联数组具有字符串索引,而不是顺序数字索引。包含测试用例变量的关联数组名为storedVars。当您希望访问或操作JavaScript代码段中的变量时,必须将其称为storedVars['yourVariableName']


Katranci的答案非常有用,但一旦我加入for循环,变量就会失去作用域。最后,我在window.eval()中使用了Katranci的解决方案


在这种情况下,我正在创建前缀为“Selenium Testing”的测试条目,并使用此代码为后续测试用例标识这些条目。这是一个没有jquery的页面。

可以定义一个函数并在其他地方重用它:

<tr>
    <td>storeEval</td>
    <td>(function(){return function(min,max){return Math.floor(Math.random()*(max-min)) + min;} })()</td>
    <td>randomIntInRange</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>(function(){return storedVars['randomIntInRange'](10000,99999) +'-'+ storedVars['randomIntInRange'](1000,9999) })()</td>
    <td>randomZip</td>
</tr>
<tr>
    <td>echo</td>
    <td>${randomZip}</td>
    <td></td>
</tr>
...
[info] echo: 92105-3139

仓库
(function(){return function(min,max){return Math.floor(Math.random()*(max-min))+min;}})()
随机初始范围
仓库
(函数(){return storedVars['randomIntInRange'](100009999)+'-'+storedVars['randomIntInRange'](10009999)})()
随机拉链
回声
${randomZip}
...
[信息]回音:92105-3139
这适用于Selenium IDE 2.9.0

<tr>
    <td>storeEval</td>
    <td>${replaceText}('foo')</td>
    <td>var</td>
</tr>
null is not a function
<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>
missing ) in parenthetical 
<tr>
    <td>storeEval</td>
    <td>${replaceText}('foo')</td>
    <td>var</td>
</tr>
missing ; before statement
<tr>
    <td>storeEval</td>
    <td>(function(input) {return input.replace(input, 'bar');})('foo')</td>
    <td>replaceText</td>
</tr>
<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>
window.eval('(function() { var trs = document.querySelectorAll(".my-list table tbody tr"); for (var x in trs) { var trc = trs[x].childNodes; for (var y in trc) { var html = trc[y].innerHTML; if (typeof html != "undefined" && html.match(/Selenium Testing/)) { return trs[x].className.replace(" lastrow", "");     }   } } } )();');
<tr>
    <td>storeEval</td>
    <td>(function(){return function(min,max){return Math.floor(Math.random()*(max-min)) + min;} })()</td>
    <td>randomIntInRange</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>(function(){return storedVars['randomIntInRange'](10000,99999) +'-'+ storedVars['randomIntInRange'](1000,9999) })()</td>
    <td>randomZip</td>
</tr>
<tr>
    <td>echo</td>
    <td>${randomZip}</td>
    <td></td>
</tr>
...
[info] echo: 92105-3139