Существует сценарий, в котором мне нужно выполнить действие (удалить или добавить) для определенного элемента.Но этот элемент может принадлежать разным классам, и в зависимости от классов я должен выполнить действие с этим элементом.
Ниже приведен фрагмент моего кода.
if(class1.isPresent()) {
deleteSpecial.click();
console.log("Class 1 executed");
addSpecialCard.element(addSpecial.locator()).click();
} else if(class2.isPresent()) {
deleteSpecial.click();
console.log("Class 2 executed");
addSpecialCard.element(addSpecial.locator()).click();
} else {
addSpecialCard.element(addSpecial.locator()).click();
console.log("Else executed");
}
хорошо.Поэтому я попытался просто мой код.Ниже приведена упрощенная версия.
class3.isDisplayed().then((result) =>{
if(result) {
addSpecialCard.element(addSpecial.locator()).click();
console.log("Class3 executed");
}else {
deleteSpecial.click();
addSpecialCard.element(addSpecial.locator()).click();
}
В случае с class1 и class2 действия, которые мне нужно выполнить, одинаковы.Таким образом, единственное, что я должен проверить, принадлежит ли элемент к class3 или нет.Если да, то выполнить только добавить действие.Но если нет, то выполните действие add delete 1st, а затем add action.
Но и в этом упрощенном коде моя часть else не выполняется.Это выглядит для класса3.Если он найдет, он выполнит часть if .Но если class3 отсутствует, то он не выполняет остальную часть и говорит, что не может найти элемент (т.е. class3)
Вот HTML-код для классов:
class1:
<span class="inventory-active-layover active-layover ng-scope">
class2:
<span class="inventory-active-layover inactive-layover ng-scope">
class3:
<span class="list-edit-link inventory-add-button ng-scope">
Дело в том, что все 3 класса не появляются одновременно в DOM.Если элемент добавлен и активен, то в DOM class1 будет показан.Но если элемент добавлен и он неактивен, то в DOM class2 будет показан.И наконец, если элемент не добавлен, то в классе DOM будет показано 3.