在 Selenium IDE 中查找数组中的所有等效键
Finding all equivalent keys in an array in Selenium IDE
我正在使用 Selenium IDE,我正在使用的数据文件对同一个键有多个引用。
我有包含以下类型信息的数组:
Array1: ['green','blue','green','red']
使用此 selenium 代码创建:
<tr>
<td>storeEval</td>
<td>new Array('green','blue','green','red');</td>
<td>Array1</td>
</tr>
我正在使用此 Selenium 代码获取键的索引 'green'(结果如预期的那样为 0):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green")}</td>
<td></td>
</tr>
但是我还需要引用 tomato,我已经尝试引用键 storedVars['Array1'].indexOf("green")]
的第二个实例(结果为 'null',预期为 2):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green")[1]}</td>
<td></td>
</tr>
我也试过了(结果为 0,预期为 2):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green",1)}</td>
<td></td>
</tr>
似乎 Selenium 或 javascript 忽略了 indexOf 的起始变量,我知道这是 Javascript 1.6 支持的,我使用的是最新的 Firefox(版本 50)
如有任何指点或建议,我将不胜感激。
所以这不是您要问的,但确实有效:
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].lastIndexOf('green')}</td>
<td></td>
</tr>
但是,像你一样,我无法让 fromIndex 受到尊重。我去了这里:http://jsfiddle.net/Ac6CT/ 检测我的 JS 版本似乎只有 1.5 (FF 50.1.0)
我的解决方案是在用户扩展中创建两个函数,创建数组然后检索数组(这有利于将循环从 Selenium(慢)移动到 javascript 函数(快) 。这提供了在数组中获取多个引用的完整 objective。
Selenium.prototype.doGetCommonDisabilityArray = function(key,record){
var result = storedVars.obj2[key];
if (result == null) {
storedVars[record]=[];
return;
}
storedVars[record]=result;
}
上面的内容满足了没有找到键的情况,并创建了数组。在 Selenium IDE 中这样使用:
<tr>
<td>addToDisabilityArray</td>
<td>${NAT090ClientIdentifier}</td>
<td>${NAT090DisabilityTypeIdentifier}</td>
</tr>
和
Selenium.prototype.doAddToDisabilityArray = function(key,record) {
var children;
if (key in storedVars.obj2) {
children = storedVars.obj2[key];
} else {
children = [];
}
children.push(record);
storedVars.obj2[key] = children;
}
其中:
doAddToDisablityArray 是 Selenium 中调用的函数 IDE
key是我在数组中寻找的值
obj2是key引用的临时数组
以这种格式在 Selenium IDE 中使用:
<tr>
<td>getCommonDisabilityArray</td>
<td>${NAT120ClientIdentifier}</td>
<td>CommonDisabilityListArray</td>
</tr>
请注意,确保 user-extension.js 在 Selenium IDE 中被引用为 'Selenium Core Extensions' 非常重要,否则我们无法访问函数之间的变量。
我正在使用 Selenium IDE,我正在使用的数据文件对同一个键有多个引用。
我有包含以下类型信息的数组:
Array1: ['green','blue','green','red']
使用此 selenium 代码创建:
<tr>
<td>storeEval</td>
<td>new Array('green','blue','green','red');</td>
<td>Array1</td>
</tr>
我正在使用此 Selenium 代码获取键的索引 'green'(结果如预期的那样为 0):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green")}</td>
<td></td>
</tr>
但是我还需要引用 tomato,我已经尝试引用键 storedVars['Array1'].indexOf("green")]
的第二个实例(结果为 'null',预期为 2):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green")[1]}</td>
<td></td>
</tr>
我也试过了(结果为 0,预期为 2):
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].indexOf("green",1)}</td>
<td></td>
</tr>
似乎 Selenium 或 javascript 忽略了 indexOf 的起始变量,我知道这是 Javascript 1.6 支持的,我使用的是最新的 Firefox(版本 50)
如有任何指点或建议,我将不胜感激。
所以这不是您要问的,但确实有效:
<tr>
<td>echo</td>
<td>javascript{storedVars['Array1'].lastIndexOf('green')}</td>
<td></td>
</tr>
但是,像你一样,我无法让 fromIndex 受到尊重。我去了这里:http://jsfiddle.net/Ac6CT/ 检测我的 JS 版本似乎只有 1.5 (FF 50.1.0)
我的解决方案是在用户扩展中创建两个函数,创建数组然后检索数组(这有利于将循环从 Selenium(慢)移动到 javascript 函数(快) 。这提供了在数组中获取多个引用的完整 objective。
Selenium.prototype.doGetCommonDisabilityArray = function(key,record){
var result = storedVars.obj2[key];
if (result == null) {
storedVars[record]=[];
return;
}
storedVars[record]=result;
}
上面的内容满足了没有找到键的情况,并创建了数组。在 Selenium IDE 中这样使用:
<tr>
<td>addToDisabilityArray</td>
<td>${NAT090ClientIdentifier}</td>
<td>${NAT090DisabilityTypeIdentifier}</td>
</tr>
和
Selenium.prototype.doAddToDisabilityArray = function(key,record) {
var children;
if (key in storedVars.obj2) {
children = storedVars.obj2[key];
} else {
children = [];
}
children.push(record);
storedVars.obj2[key] = children;
}
其中:
doAddToDisablityArray 是 Selenium 中调用的函数 IDE
key是我在数组中寻找的值
obj2是key引用的临时数组
以这种格式在 Selenium IDE 中使用:
<tr>
<td>getCommonDisabilityArray</td>
<td>${NAT120ClientIdentifier}</td>
<td>CommonDisabilityListArray</td>
</tr>
请注意,确保 user-extension.js 在 Selenium IDE 中被引用为 'Selenium Core Extensions' 非常重要,否则我们无法访问函数之间的变量。