Вы можете создать wait (ExpectedCondition), например, для ожидания элемента с некоторым таймаутом, прежде чем щелкнуть по нему или выполнить любое другое действие.
await waitUntilPresenceOfElement (element (by.id ('someid ')));
export async function waitUntilPresenceOfElement(element: ElementFinder, timeout: number = 5000): Promise<any> {
return await browser.wait(ExpectedConditions.presenceOf(element),
timeout,
'Waiting for element ' + element.locator() + 'to be PRSENCE with timeout ' + timeout + 'ms'
); }
Если элемент не найден по тайм-ауту, у вас возникла проблема.
Второе решение - работать с дескриптором исключения и создать несколькоПовторите функцию.
export async function clearText(textBox: ElementFinder) {
try {
await textBox.clear().then(() => {
console.log('Text field has been cleared.');
});
} catch (error) {
// example for no such element exception
if (error instanceof NoSuchElementError) {
// retry function
} else {
console.log('Error wile trying to clear text from element.');
throw error;
}
}
}