Как использовать условие If-else в Selenium (Java) для работы условия в блоке else - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь найти элемент в блоке else, если условие в блоке if не работает.

  try
    {
       if(Driver.driver.findElement(By.xpath("//div[@id='Tpay_success']")).isDisplayed())
        {
            System.out.println("Payment is successful");
            Reporter.log("Payment is successful");
        }
        else
        {
            Thread.sleep(2000);
            {
            if(Driver.driver.findElement(By.id("pay_decline")).isEnabled()) 
             {
                System.out.println("pay declined");
                action.moveToElement(By.id("pay_decline")).isEnabled()).click().perform();
                Reporter.log("PAYMENT DECLINED!!");
              }

         }  
    catch(ExceptionInInitializerError ex)
    {
            System.out.println(ex);
    }
  }

Я получаю сообщение об ошибке:

Unable to locate element: {"method":"xpath","selector":"//div[@id='Tpay_succes']"}

Я хочу, чтобы блок else выполнялся, если блок if не выполняется. Любые предложения приветствуются. Спасибо.

1 Ответ

1 голос
/ 11 апреля 2019
if(Driver.driver.findElement(By.xpath("//div[@id='Tpay_success']")).isDisplayed())

Это не работает так, как вы думаете. findElement() выдаст ошибку, если элемент отсутствует в DOM текущей загруженной страницы. Это означает, что isDisplayed() не будет вызываться в таком случае.

Вы можете делать что хотите с try...catch:

  try
    {
       Driver.driver.findElement(By.xpath("//div[@id='Tpay_success']"))
       System.out.println("Payment is successful");
       Reporter.log("Payment is successful");
    } catch(ExceptionInInitializerError ex) {
            Thread.sleep(2000);
            if(Driver.driver.findElement(By.id("pay_decline")).isEnabled()) {
                System.out.println("pay declined");
                action.moveToElement(By.id("pay_decline")).isEnabled()).click().perform();
                Reporter.log("PAYMENT DECLINED!!");
            }
    }

Обратите внимание, что вы должны узнать о том, как заставить драйвер селена ожидать определенный элемент, а не использовать Thread.sleep().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...