[英]How to click on Button until a dependent value reaches a certain value?
使用量角器,我試圖使UI的一部分自動化,其中使用加號-減號按鈕選擇了最小-最大范圍(即100'000-200'000)。
有一個inputAmount
(即250'000),定義了要選擇的范圍。 現在,我應該單擊plus-button
直到得到200'000-300'000的范圍,該范圍由動態調整的<div class="currentMax">100'000</div>
。
我的問題是將當前選定范圍的currentMax
從String轉換為數字,因此可以將其與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>
我的量角器代碼如下所示:
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的新手,我認為這只是我做錯了的某種語法。 感謝您提供任何建議,並推動着可行的功能。
我沒有發表評論的權利,因此我將其作為答案,您是否將所有代碼都放在了then()中-在promise返回值之后?
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);
};
});
由於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.
}
};
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.