Я использую Protractor JS. И сайт написан в Angular JS.
Итак, у меня есть тумблер. И я заметил, что значение в тумблере переключается с true на false и false, когда вы выключаете или выключаете.
Я пытаюсь создать условие, когда Protractor посещает мою страницу, когда он видит тумблер "выключен", он превратит его в 'on'. Если тумблер уже 'on', он сначала выключит его, а затем снова закроет его 'on'.
Я придумал этот код, но по какой-то причине он не работает:
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. Не отображаются ошибки.
Если есть лучший способ, дайте мне знать. Это кажется очень ограниченным, чтобы не создавать надлежащие условия в этой структуре.