gpt4 book ai didi

javascript - 在 Nightwatch 中选择并单击随机元素的自定义函数

转载 作者:行者123 更新时间:2023-11-28 20:51:12 25 4
gpt4 key购买 nike

我是端到端测试(和 JS)的新手。我使用 Nightwatch 框架。

我正在尝试创建一个函数,该函数从具有相同选择器的元素列表中选择一个随机元素,然后单击它。

这是我尝试过的:

  pickOne(selector, target) {
this.api.elements(selector, target, function(res) {
optionsLength = Math.floor((Math.random() * res.value.length) + 1);
});
this.api.waitForElementVisible(`${target}:nth-child(${optionsLength})`);
this.api.click(`${target}:nth-child(${optionsLength}) .action-button`);
}

但在这种情况下,optionsLength 未定义

Math.floor((Math.random() * res.value.length) + 1) 返回一个数字。我想在函数之外使用这个数字。

我试图将完整的函数存储在一个变量中,如下所示:

const optionsLength = this.api.elements(selector, element, function(res) {
Math.floor((Math.random() * res.value.length) + 1);
});

但是这样 optionsLength 记录 [object Object] 而不是一个数字。

最佳答案

在回调中定义第二个和第三个函数是不好的,它会导致回调 hell 。

您应该改用 .perform() api,它会链接您的函数:

pickOne(selector, target) {    
this.api.elements(selector, target, function(res) {
optionsLength = Math.floor((Math.random() * res.value.length) + 1);
})
.perform(function (client, done) {
console.log(optionsLength) ;// ***you can access optionsLength in above function***

done();
})

这是来自 nightwatch 的文档 Perform

关于javascript - 在 Nightwatch 中选择并单击随机元素的自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45879532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com