Прервать загрузку сайта по условию в Selenium WebDriver - PullRequest
0 голосов
/ 16 октября 2018

Есть несколько файлов, которые должны быть загружены и ожидают вывода.Он открывает AJAX-подобное окно во время обработки.Если обработка занимает слишком много времени, в этом окне нужно нажать кнопку Закрыть и файл необходимо отправить снова.

Я пытаюсь использовать приведенный ниже код, но не нажимает ЗакрытьКнопка за 10 секунд.

public void clickOnSendButton() throws InterruptedException {
        WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement webElement;
        try {
            driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
            driver.findElement(sendButton).click();
            log.info("Processing in progress!");
            webElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("button-download")));
        } catch (TimeoutException ex) {
            webElement = null;
        } finally {
            driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
        }

        if (webElement == null) {
            driver.findElement(popUpClose).click();
            TimeUnit.SECONDS.sleep(1);
            driver.findElement(sendButton).click();
        }
}

1 Ответ

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

Попробуйте использовать условие visibilityOfElementLocated вместо «senceOfElementLocated », как показано ниже:

webElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("button-download")));

Использование цикла:

try {
      driver.findElement(By.id("button-submit")).click();
      Thread.sleep(3000);//3 seconds
      log.info("Processing in progress!");

      for(int i=0; i<10;i++){
        try{
          webElement = driver.findElement(By.className("button-download"));
        } catch (Exception e){e.printStackTrace();}

        if(webElement.isDisplayed())
          break;
        else
          Thread.sleep(1000);
      }

    } catch (TimeoutException ex) {ex.printStackTrace();} finally {
      driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
    }


    if (!webElement.isDisplayed() ) {
      driver.findElement(By.xpath("/html/body/div[4]/div[1]/button/span[1]")).click();
      Thread.sleep(2000);
      driver.findElement(By.id("button-submit")).click();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...