如何使用 NightwatchJS 从下拉列表中 select 一个有效的随机值?
How to select a valid random value from drop down using NightwatchJS?
我正在尝试使用 nightwatch.js 自动执行某些 UI 测试,我需要 select 从下拉列表中获取一个随机值,如下面的代码所示。
<select class="form-control" name="drop_ddl" id="drop_ddl">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
截至目前,我使用的方法不可靠,以防下拉选项值中不存在我 selected 的随机数。
var drop_ddl=Math.floor((Math.random() * 8) + 1);
return this.client.click("#drop_ddl option[value='"+drop_ddl+"']");
如果随机数是 6,它没有出现在列表中,它将无法通过进一步的测试。
有没有一种方法可以将值读取到数组中,然后 select 从这些可用值中随机读取?
在选项中添加顺序 ID 怎么样?
<select class="form-control" name="drop_ddl" id="drop_ddl">
<option id="1" value=""></option>
<option id="2" value="1">1</option>
<option id="3" value="2">2</option>
<option id="4" value="3">3</option>
<option id="5" value="4">4</option>
<option id="6" value="7">7</option>
<option id="7" value="8">8</option>
<option id="8" value="9">9</option>
<option id="9" value="11">11</option>
<option id="10" value="12">12</option>
</select>
<script>
var drop_ddl=Math.floor((Math.random() * 10) + 1);
$("#drop_ddl option[id='" + drop_ddl + "']").attr("selected", "selected");
</script>
使用elements
获取所有下拉选项。
browser.elements('css selector', '#drop_ddl option', function(result) {
return result.value.length;
})
现在您有了选项的数量,使用 nth-child 到 select 一个随机选项。
var drop_ddl=Math.floor((Math.random() * optionsLength) + 1);
return this.client.click("#drop_ddl option:nth-child(drop_ddl)");
遇到过类似的情况,当你必须select随机单选按钮。这有点棘手 - 你不能真正使用 :nth-child
selector,因为该死的混蛋可能到处都是。在这种情况下,您可以使用:
exports.command = function (selector, value) {
this
.elements('css selector', selector, res => {
if (res.value.length) {
let random = Math.floor(Math.random() * res.value.length);
let el = res.value[random].ELEMENT;
this.elementIdClick(el);
}
});
return this;
};
我正在尝试使用 nightwatch.js 自动执行某些 UI 测试,我需要 select 从下拉列表中获取一个随机值,如下面的代码所示。
<select class="form-control" name="drop_ddl" id="drop_ddl">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
截至目前,我使用的方法不可靠,以防下拉选项值中不存在我 selected 的随机数。
var drop_ddl=Math.floor((Math.random() * 8) + 1);
return this.client.click("#drop_ddl option[value='"+drop_ddl+"']");
如果随机数是 6,它没有出现在列表中,它将无法通过进一步的测试。
有没有一种方法可以将值读取到数组中,然后 select 从这些可用值中随机读取?
在选项中添加顺序 ID 怎么样?
<select class="form-control" name="drop_ddl" id="drop_ddl">
<option id="1" value=""></option>
<option id="2" value="1">1</option>
<option id="3" value="2">2</option>
<option id="4" value="3">3</option>
<option id="5" value="4">4</option>
<option id="6" value="7">7</option>
<option id="7" value="8">8</option>
<option id="8" value="9">9</option>
<option id="9" value="11">11</option>
<option id="10" value="12">12</option>
</select>
<script>
var drop_ddl=Math.floor((Math.random() * 10) + 1);
$("#drop_ddl option[id='" + drop_ddl + "']").attr("selected", "selected");
</script>
使用elements
获取所有下拉选项。
browser.elements('css selector', '#drop_ddl option', function(result) {
return result.value.length;
})
现在您有了选项的数量,使用 nth-child 到 select 一个随机选项。
var drop_ddl=Math.floor((Math.random() * optionsLength) + 1);
return this.client.click("#drop_ddl option:nth-child(drop_ddl)");
遇到过类似的情况,当你必须select随机单选按钮。这有点棘手 - 你不能真正使用 :nth-child
selector,因为该死的混蛋可能到处都是。在这种情况下,您可以使用:
exports.command = function (selector, value) {
this
.elements('css selector', selector, res => {
if (res.value.length) {
let random = Math.floor(Math.random() * res.value.length);
let el = res.value[random].ELEMENT;
this.elementIdClick(el);
}
});
return this;
};