Как выполнить автоматическую прокрутку до элемента в тесте транспортира, если транспортиру не удается найти элемент в представлении? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть набор тестов, и я хотел бы автоматически прокрутить элементы на странице, если транспортиру не удалось найти элемент в текущем представлении.

Тесты были написаны до внесения нескольких изменений впользовательский интерфейс для исправления заголовков.Это привело к сбою нескольких тестов e2e.

В настоящее время я должен перейти к каждому из сбойных блоков it и выполнить прокрутку до элемента с помощью вспомогательных функций.

Я хочупоручить транспортиру снова искать элемент, если он не может найти элемент.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Возникла та же проблема, когда необходимо было "прокрутить" элемент и щелкнуть, который был вне поля зрения.

При этом используется элемент, а затем смещается представление к нему, чтобы вы могли щелкнуть по нему:

await browser.actions (). MouseMove ('element'). Execute ()

0 голосов
/ 11 октября 2018

Вы можете создать 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;
        }
    }
}
...