使用 Protractor ,我尝试自动化 UI 的一部分,其中使用加减按钮选择最小最大范围(即 100'000-200'000)。
有一个inputAmount
(即 250'000),定义要选择的范围。
现在我应该点击plus-button
直到我得到一个范围 200'000-300'000,由动态调整的 <div class="currentMax">100'000</div>
标识。 .
我的问题是转换 currentMax
当前选定范围从字符串到数字的范围,因此我可以将其与 inputAmount
进行比较。
HTML 看起来像这样:
<html>
<div class="max">100'000</div>
<div class="slider-buttons">
<div class="slider-button">
<div class="slider-button-plus"></div>
</div>
<div class="slider-button">
<div class="slider-button-minus"></div>
</div>
</div>
</html>
我的 Protractor 代码如下所示:
this.selectAmountRange = function() {
var currentMax = $('.max').getText(); //How do I get this value as number?
var btnPlus = $('.slider-buttons .slider-button-plus');
for (i = currentMax; i <= inputAmount; i = currentMax) {
btnPlus.click();
browser.wait(300);
};
};
一个问题是currentMax
是用“'”进行千位分隔的,所以我无法直接转换它。
另一个问题是, getText() 返回一个 promise ,但即使我找到了一些示例,到目前为止我也无法获取字符串,甚至删除分隔符。
我尝试过这个,但没有成功。
var currentMax = $('.max').getText().then(function(value){
value.replace(/\'/,'');
});
由于我对 JavaScript 和 Protractor 还很陌生,我认为这只是我做错的一些语法。 感谢您提供任何建议并插入实现可行的功能。
最佳答案
由于 javascript 是异步的,因此您需要在访问 Promise 的返回值之前解析 Promise。在您的情况下,您需要实现递归以使您的方法单击 slider 直到设置所需的值。看看下面的例子。
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.
}
};
};
关于javascript - 如何单击按钮直到依赖值达到某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452454/