Javascript 如何单击按钮直到从属值达到某个值?
使用量角器,我试图自动化用户界面的一部分,其中使用加减按钮选择最小-最大范围(即100'000-200'000) 有一个Javascript 如何单击按钮直到从属值达到某个值?,javascript,protractor,Javascript,Protractor,使用量角器,我试图自动化用户界面的一部分,其中使用加减按钮选择最小-最大范围(即100'000-200'000) 有一个inputAmount(即250'000),定义了要选择的范围。 现在,我应该单击plus按钮,直到得到一个范围200'000-300'000,由动态调整的100'000标识 我的问题是将当前所选范围的currentMax从字符串转换为一个数字,以便将其与inputAmount进行比较。 HTML如下所示: 100'000 我没有评论的权利,所以我把它作为一个答案,在承诺返
inputAmount
(即250'000),定义了要选择的范围。
现在,我应该单击plus按钮
,直到得到一个范围200'000-300'000,由动态调整的100'000
标识
我的问题是将当前所选范围的currentMax
从字符串转换为一个数字,以便将其与inputAmount
进行比较。
HTML如下所示:
100'000
我没有评论的权利,所以我把它作为一个答案,在承诺返回值后,您是否将所有代码都放在了then()中
currentMax是一个初始化一次的变量,循环一进入它就结束了吗
你提到了currentMax,代码中有max,它们是一样的吗?btnPlus单击增量是多少,最大值是多少
最后,我想提出类似的建议:
$('.max').getText().then(function(value){
var currentMax = parseInt(value.replace(/\'/,''));
var btnPlus = $('.slider-buttons .slider-button-plus');
for (i = currentMax; i <= inputAmount; i++) {
btnPlus.click();
browser.wait(300);
};
});
$('.max').getText().then(函数(值){
var currentMax=parseInt(value.replace(/\'/,'');
var btnPlus=$('.slider button.slider button plus');
对于(i=currentMax;i我没有评论的权利,所以我把它作为一个答案,在承诺返回值之后,您是否将所有代码都放在了then()中
currentMax是一个初始化一次的变量,循环一进入它就结束了吗
你提到了currentMax,代码中有max,它们是一样的吗?btnPlus点击增量是多少,max
最后,我想提出类似的建议:
$('.max').getText().then(function(value){
var currentMax = parseInt(value.replace(/\'/,''));
var btnPlus = $('.slider-buttons .slider-button-plus');
for (i = currentMax; i <= inputAmount; i++) {
btnPlus.click();
browser.wait(300);
};
});
$('.max').getText().then(函数(值){
var currentMax=parseInt(value.replace(/\'/,'');
var btnPlus=$('.slider button.slider button plus');
对于(i=currentMax;i,由于javascript是异步的,所以在访问承诺返回值之前需要解析承诺。在您的情况下,需要实现递归,使您的方法单击滑块,直到设置了所需的值。请看下面的示例
var selectAmountRange = function(inputAmount) {
$('.max').getText().then(function(currentMax){
var btnPlus = $('.slider-buttons .slider-button-plus');
if(currentMax < selectAmountRange){
btnPlus.click();
browser.sleep(3000);
selectAmountRange(inputAmount); //call the same method untill required inputAmount is selcted.
}
};
};
var selectAmountRange=函数(inputAmount){
$('.max').getText().then(函数(currentMax){
var btnPlus=$('.slider button.slider button plus');
如果(当前最大值<选择范围){
btnPlus.click();
浏览器。睡眠(3000);
SELECTAMONTRANGE(inputAmount);//调用相同的方法,直到选择了所有必需的inputAmount。
}
};
};
由于javascript是异步的,因此在访问承诺的返回值之前,您需要解析承诺。在您的情况下,您需要实现递归,使您的方法单击滑块,直到设置了所需的值。请看下面的示例
var selectAmountRange = function(inputAmount) {
$('.max').getText().then(function(currentMax){
var btnPlus = $('.slider-buttons .slider-button-plus');
if(currentMax < selectAmountRange){
btnPlus.click();
browser.sleep(3000);
selectAmountRange(inputAmount); //call the same method untill required inputAmount is selcted.
}
};
};
var selectAmountRange=函数(inputAmount){
$('.max').getText().then(函数(currentMax){
var btnPlus=$('.slider button.slider button plus');
如果(当前最大值<选择范围){
btnPlus.click();
浏览器。睡眠(3000);
SELECTAMONTRANGE(inputAmount);//调用相同的方法,直到选择了所有必需的inputAmount。
}
};
};
你有没有查过如何在javascript中将字符串转换为数字?是的,我查过。但是,直到removig the'这一部分已经成了问题,我才来。我可以通过将传递的参数设置为显式字符串来解决这个问题(否则replace会被解释为'replace url',强制将参数设置为一个位置)。你有没有查过如何在javascript中将字符串转换为数字?是的,我查过。但是,直到removig the'这一部分出现问题之前,我才来。我可以通过将传递的参数设置为显式字符串来解决这个问题(否则replace会被解释为'replace url',强制将参数设置为一个位置)。这个答案对我帮助很大!递归确实解决了我的大部分问题。在你的例子中,我不得不删除“var”并在then部分的末尾添加“')。完成后,我成功地重复单击加号按钮。缺少的部分是“如何将我的getText()转换为数字?”。默认情况下,它似乎是currentMax.replace(/\”/,“”)
正在强制我的currentMax成为一个位置而不是一个字符串(即100'000
)。同样奇怪的是,我从执行中得到null
,但当我执行browser.enterepl()时
在then函数开始时,手动执行相同的步骤是有效的。有什么线索吗?将此标记为正确答案,因为它解决了我的主要问题(使用递归
而不是for
)。但是我仍然对getText转换感到不安,所以我很高兴能有更多的评论。你能使用下面的正则表达式吗?currentMax=parseInt(currentMax.repleace(/[^0-9]/g',);
这是正确的提示。毕竟,我必须通过使用getText(),将currentMax的函数输入强制为字符串。然后(函数(文本){var currentMax=parseInt(String(text).replace(/[^0-9]/g',);});
。现在它终于可以工作了!再次感谢您的良好输入!这个答案对我帮助很大!确实递归解决了我的大部分问题。在您的示例中,我必须删除“var”并放置一个“)'在then部分的末尾。完成后,我成功地重复单击加号按钮。缺少的部分是'如何将我的getText()转换为数字?'。默认情况下,似乎currentMax.replace(/\'/,'')
强制我的currentMax成为一个位置而不是字符串(即100'000
)。同样奇怪的是,我从执行中得到了null
,但是当我执行browser.enterepl()
时,在函数开始时,手动执行相同的步骤是有效的。有什么线索吗?将此标记为正确答案,因为它解决了我的主要问题(对于,使用递归
而不是).但是我仍然在为getText转换而烦恼,所以我很高兴能有进一步的改进