Selenium, как выводить сообщение, когда страница не отвечает или время ожидания при поиске элемента? - PullRequest
0 голосов
/ 10 октября 2018

Я использую Internet Explorer версии 11.0.85 , и в настоящее время в этом IE возникают проблемы с тем, что страница не отвечает или время ожидания истекло при случайном запуске селена .Как я могу определить, когда страница не отвечает или селен имеет время ожидания во время работы, и запросить окно сообщения с помощью JOptionpane?

Вещи, которые я хочу достичь

  1. Если страница не отвечает на неговыдаст окно с сообщением.
  2. Если у Selenium истекло время ожидания, поскольку он не может найти элемент, на который нужно нажать, он выведет окно с сообщением.

У меня есть множество возможностей, таких как Получить атрибут, попробуйте catch, Timeouts (). SetScriptTimeoutSince .но никто из меня не заставляет меня достигать желаемого результата, или я пишу это неправильно, или нет, трудно сказать, потому что мне нужно продолжать бежать, пока он не застрянет, чтобы увидеть результат.Любой, кто попробовал это и имеет код, который работает, чтобы справиться с этой ситуацией 2, действительно ценит вашу помощь, спасибо!

Обновление

Я пробовал этот код, кажется, работает правильнои ожидал следующий пример pburgr, но я просто не могу поместить более 1 исключения в коде, какая-либо идея, почему это не может быть?

    try {

    // TimeSheet Button
    waitForElementLocatedBy(driver,timesheet);
    driver.findElement(timesheet).sendKeys(Keys.ENTER);

    } catch (TimeoutException e) {
    // TODO: handle exception
    messageBox("Error Occur");
    }



    public static void messageBox(String message) {
    final JDialog dialog = new JDialog();
    dialog.setAlwaysOnTop(true);    
    JOptionPane.showMessageDialog(dialog, message,"Information", JOptionPane.INFORMATION_MESSAGE); 
    }

    public static void waitForElementLocatedBy(WebDriver driver, By locator) {
        new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(locator));
   }

1 Ответ

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

Try - поймать с ожиданием на ExpectedConditions должно сделать работу.

try {wait_sec(driver, 5).until(ExpectedConditions.elementToBeClickable(By.id("foo")));} catch (TimeoutException | NoSuchElementException e) {msg("Problem with loading the page occured.");}

или

try {wait_sec(driver, 5).until(ExpectedConditions.numberOfElementsToBeMoreThan(By.id("foo"), 1));} catch (TimeoutException | NoSuchElementException e) {msg("Problem with loading the page occured.");}

или какой-либо другой

// modified wait method
public WebDriverWait wait_sec(WebDriver driver, int sec) {
    return new WebDriverWait(driver, sec);
}


// display msgbox
public void msg(String string) {
    final JDialog dialog = new JDialog();
    dialog.setAlwaysOnTop(true);    
    JOptionPane.showMessageDialog(dialog, string);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...