Код для щелчка переключателя не работает во второй раз в моем скрипте транспортира

Я дважды вызываю функцию для выполнения фрагмента кода в моем скрипте транспортира. Ниже приведен снимок кода моей функции, которая завершается с ошибкой при повторном вызове. sessionNo - это аргумент, передаваемый этой функции. Это может быть либо 0, либо 1. В зависимости от значения этого аргумента будет выбран либо переключатель с индексом 0, либо переключатель с индексом 1.

function sessionBegin(sessionNo)
{
    element.all(by.repeater('type in types')).all(by.css ("input[type='radio']")).isPresent(). then(function()
    {
        var sessionType = element.all(by.repeater('type in types')).all(by.css ("input[type='radio']")).get(sessionNo);
        sessionType.click();                                             
    });
}

Этот код прекрасно работает, когда эта функция вызывается впервые. Но когда он вызывается во второй раз с другим значением для sessionNo, происходит сбой с ошибкой "Failed: element not visible". Я не могу понять, почему вышеприведенный код не может найти тот же элемент во второй раз, как это было в первый раз с точно таким же кодом.

1 ответ

Это зависит от кода вашего приложения, возможно, ваш элемент становится невидимым между найденным и действием щелчка, или он еще не виден. В первом случае вы должны исследовать, что происходит на стороне приложения, во втором случае (если он еще не виден) вы можете подождать, пока он не станет видимым, например: browser.wait (EC.visibilityOf (element), 5000, Element not visible: ${element.locator()}); он будет ждать элемент 5 секунд.

Другие вопросы по тегам