использование селена с питоном для обработки уведомлений о подтверждении, когда они появляются - PullRequest
0 голосов
/ 24 сентября 2019

Я использую Селен с Python для автоматизации веб-сайта, включая навигацию и загрузку файлов. Если страница простаивает около 15 минут (примерно, не точно), появляется всплывающее окно с предупреждением о времени ожидания сеанса и запрашиваетсянажмите «ОК», чтобы продолжить.Я знаю, что могу использовать следующий код, чтобы иметь дело с всплывающим подтверждением

driver.switch_to.alert.accept()

Но как я могу нажимать «ОК» во всплывающем окне подтверждения, когда оно появляется? Нужно ли проверять каждые 30 секунд, есливсплывающее окно подтверждения существует?

1 Ответ

1 голос
/ 24 сентября 2019

Похоже, что у кого-то здесь был такой же вопрос, как и у вас: Как проверить, существует ли оповещение с помощью WebDriver?

Если вы запускаете driver.switch_to.alert, когда оповещение фактически не присутствует, вы получите NoAlertPresentException.Итак, основная идея состоит в том, чтобы написать метод с блоком try / catch, который пытается driver.switch_to.alert и возвращает true или false в зависимости от наличия исключения.

Вот пример:

public boolean doesAlertExist() 
{ 
    try 
    { 
        driver.switch_to.alert(); 
        return true; 
    }  
    catch (NoAlertPresentException e) 
    { 
        return false; 
    }  
}  

Что касается проблемы с синхронизацией (предупреждение появляется каждые 15 минут или около того) - вы можете попробовать написать метод-обертку для driver.findElement() и element.click(), который неявно проверяет наличие предупреждения.Конкретные подробности о методе будут зависеть от проекта, но вот пример чего-то простого:

public IWebElement findElementWrapped(By by)
{
    if (doesAlertExist())
    {
        driver.switch_to.alert().accept(); // accept the alert
        return driver.findElement(by); // use selenium's standard findElement
    }
    else
    {
        // no alert exists, just find the element
        return driver.findElement(by);
    }
}

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

// check for alert, accept alert if it exists, get the desired web element
IWebElement myElement = driver.findElementWrapped(by);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...