Я отключил поток управления и начал распространять async / await по моим тестам e2e.
И здесь возникает проблема, что
Failed: Индекс выходит за границы. Попытка получить доступ к элементу с индексом: 0, но есть только 0 элементов, соответствующих локатору By (css selector, .OneLine)
NoSuchElementError: Индекс выходит за пределы. Попытка получить доступ к элементу с индексом: 0, но есть только 0 элементов, соответствующих локатору. By (css selector, .OneLine)
Вот мой тест
it('', async () => {
await page.dragElToCell('Text', {x: 1, y: 0});
// further some expectations that are not reached due to error thrown which points to page.dragElToCell
})
Этометод obj страницы
async dragElToCell(name: string, pos: {x: number, y: number}) {
const el = this.getDraggableEl(elName);
const cell = this.getCell(pos.x, pos.y);
return browser.actions().dragAndDrop(el, cell).perform();
}
getDraggableEl(name: string) {
return element(by.cssContainingText('.draggable', name);
}
getCell(x: number, y: number) {
return $$('.OneLine').get(y).$$('.Column').get(x);
}
Этот код работал довольно хорошо в потоке управления. Как только я отключил его, он перестал работать.
Хитрость в том, что если я выполню
expect(await $$('.OneLine').get(0).$$('.Column').get(1).isPresent()).toBeTruthy();
внутри моего набора тестов, он будет работать нормально и даст мне true
.
Я также отладил getCell
, и он получает правильные числа.
Кроме того, я установил режим сна на 10 секунд, чтобы гарантировать, что элементы видны (и для этого также выполнено querySelectorAll
дваждыповторить ту же последовательность и получить элемент, который я ожидал получить).