首页 > 解决方案 > 在 while 循环中比较 .getAtribute("value")

问题描述

在此处输入图像描述

在此处输入图像描述

我在试图自动化的网页中有这个元素,我的问题是我创建了一个函数来清除输入或文本插槽,按下退格键直到元素长度变为 0,但我试图使另一个条件成为元素等于“0,00”。我尝试过使用以下代码:

async clear(locator) {

    await this.locate(locator)
    
    let aux = await element.getAttribute("value");
    
    console.log("Value to be cleaned: ",aux)
    while (aux.length > 0 || aux != "0,00") {
        await element.sendKeys(Key.BACK_SPACE);
        aux = await element.getAttribute("value");
        
        console.log('A|',aux,'|',typeof aux)
        console.log('B|',"0,00","|",typeof "0,00")
    }

}

问题是它会导致无限循环,尽管参数似乎相同,我已经将控制台日志进行比较并且我收到了以下输出:

在此处输入图像描述

结果看起来是一样的,但条件永远不会满足并进入无限循环。

标签: javascriptseleniumloops

解决方案


你必须像这样编写while循环:

while (aux.length > 0 && aux != "0,00") {
    await element.sendKeys(Key.BACK_SPACE);
    aux = await element.getAttribute("value");
    
    console.log('A|',aux,'|',typeof aux)
    console.log('B|',"0,00","|",typeof "0,00")
}

你放错了|| (或) 而不是 && (和)。


推荐阅读