使用量角器我尝试自动化UI的一部分,其中使用正负按钮选择最小 - 最大范围(即100' 000-200' 000)。 / p>
有一个inputAmount
(即250' 000),用于定义要选择的范围。
现在我应该点击plus-button
,直到我得到200&#39-30000&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>
&#13;
我的量角器代码看起来像这样:
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
用&#34;&#39;&#34;千分隔,因此我无法直接转换它。
另一个问题是,getText()返回一个promise,但即使我找到了一些例子,到目前为止我还没有获取字符串,甚至删除了分隔符。
我尝试了这个,但没有用。
var currentMax = $('.max').getText().then(function(value){
value.replace(/\'/,'');
});
由于我对JavaScript和Protractor都很陌生,我认为它只是一些我做错的语法。 感谢任何建议和对可行功能的推动。
答案 0 :(得分:0)
我没有权利发表评论所以我把它作为一个答案,你把所有代码都放在那里() - 在promise返回值之后?
currentMax是一个初始化的变量,一旦进入它就会结束循环!?
你提到过currentMax,在代码中有最大值是否相同?什么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);
};
});
答案 1 :(得分:0)
由于javascript是异步的,因此您需要在从promise中访问返回值之前解析promise。在您的情况下,您需要实现递归以使您的方法单击滑块直到设置所需的值。看看下面的例子。
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.
}
};
};