Я хотел бы получить элементы меню-интерфейса, по которым пользователь может щелкнуть.
К сожалению, метод isEnabled
всегда возвращает true
для всех моих элементов.Вот почему я пробую другой подход.Я заметил, что у отключенных всегда есть класс 'ui-state-disabled'.Как следствие, я могу получить все отключенные элементы, используя следующую функцию:
function getDisabledMenuItems() {
return getCustomGrid().all(by.className('menu-ui')).all(by.className('ui-state-disabled')).all(by.className('menu-item-text'));
}
, а затем все элементы меню, используя следующую:
function getAllMenuItems() {
return getCustomGrid().all(by.className('menu-ui')).all(by.className('menu-item-text'));
}
Теперь я хотел быисключить элементы, возвращенные getDisabledMenuItems
из элементов, возвращенных getAllMenuItems
.
Вопрос
Какой самый простой способ исключить элементы ElementArrayFinder, существующие в другомElementArrayFinder?
Я пытаюсь сделать это с помощью метода filter
следующим образом:
const disabledText = getDisabledMenuItems().getText();
const allItems = getAllMenuItems();
allItems.filter(function(elem, index) {
return elem.getText().then(function(text) {
return disabledText.indexOf(text) < 0 ;
});
});
, но мой код не работает (indexOf does not exists on type Promise<string>
).Мне также интересно, как проще всего это сделать.