一尘不染

如何在量角器中为元素存在或不存在创建条件

angularjs

我正在使用Protractor JS。该网站是用Angular JS编写的。

所以我有一个拨动开关。我注意到切换开关中的值从true变为false,从false变为true时将其关闭或打开。

我正在尝试创建一个条件,当量角器访问我的页面时,看到切换开关“关闭”,它将打开它。如果拨动开关已经“打开”,它将首先将其“关闭”,然后再次将其“打开”。

我想出了这段代码,但是由于某种原因它无法正常工作:

 if( expect(element(By.id('toggle-switch')).element(By.css('[value="false"]')).isDisplayed()) ) {
            element(By.id('toggle-switch')).click();
            console.log('in the if')
       }

       else{
           element(By.id('toggle-switch')).click();
           browser.sleep(3000);
           element(By.id('toggle-switch')).click();
           console.log('in the else')
       }

该代码似乎仅适用于if语句。由于某种原因,它将永远不会消失。这是我收到的错误:

NoSuchElementError:使用定位器找不到元素:By.cssSelector(“ [value = \” false \“]”)

所以我尝试了

.isPresent()而不是.isDisplayed()
我不再收到上述错误,但是由于某些原因,在使用.isPresent()时,它始终转到if语句,仅运行该语句,而不执行else语句。没有显示错误。

如果有更好的方法,请告诉我。这似乎很局限,无法在此框架中创建适当的条件。


阅读 205

收藏
2020-07-04

共1个答案

一尘不染

请记住,这isDisplayed()返回了一个承诺,您可以尝试:

element(anyFinder).isDisplayed().then(function(result) {
    if ( result ) {
        //Whatever if it is true (displayed)
    } else {
        //Whatever if it is false (not displayed)
    }
});
2020-07-04