Как использовать явный объект ожидания в разных методах одного и того же класса? - PullRequest
0 голосов
/ 05 марта 2020

В программе Selen java я создал явное условие ожидания внутри класса. Но не удалось вызвать этот объект ожидания в разных методах одного и того же класса.

Ниже приведен код, который я написал:

public class AutomationScenarioWithCustomWaits {

        public static WebDriverWait wait = new WebDriverWait(driver, 10);
        public static void main(String[] args) throws IOException {
            System.setProperty("webdriver.chrome.driver", "C:\\SDET_Certification_2020\\SDETCertification2020\\chromedriver.exe");
        login();
        clickPIMforActions();

    public static void login() throws IOException {

        driver = new ChromeDriver();
        driver.get("https://opensource-demo.orangehrmlive.com/");

        System.out.println("OrangeHRM is launched successfully...");
        System.out.println("");

         // Specify the path of file
          File src=new File("C:\\SDET_Certification_2020\\SDETCertification2020\\DataSet.xlsx");
         // load file**strong text**
         FileInputStream fis=new FileInputStream(src);
        // Load workb`enter code here`ook
        XSSFWorkbook wb=new XSSFWorkbook(fis);         
        // Load sheet- Here we are loading first sheetonly
        XSSFSheet sh1= wb.getSheetAt(0);

        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("txtUsername"))).sendKeys(sh1.getRow(1).getCell(3).getStringCellValue());
        System.out.println("User name is entered successfully...");
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("txtPassword"))).sendKeys(sh1.getRow(1).getCell(4).getStri`enter code here`ngCellValue());
        System.out.println("Password is entered successfully...");

        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("btnLogin"))).click();
        System.out.println("Login Button is clicked..");
        System.out.println("User is in: " + driver.getTitle() + " page");
        System.out.println("");
    }

    public static void clickPIMforActions() {
//      WebDriverWait wait2 = new WebDriverWait(driver, 10);
        pim = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"menu_pim_viewPimModule\"]/b")));
        Actions actions = new Actions(driver);
        actions.moveToElement(pim).click().build();
        System.out.println("PIM menu is clicked...");

    }

}

Когда я пытаюсь выполнить, выдается следующее сообщение об ошибке:

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:782)
    at org.openqa.selenium.support.ui.FluentWait.<init>(FluentWait.java:96)
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:71)
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:45)
    at seleniumAssignment_3.AutomationScenarioWithCustomWaits.<clinit>(AutomationScenarioWithCustomWaits.java:33)

Пожалуйста, предложите мне, как использовал один явный объект ожидания во всех методах одного и того же класса.

1 Ответ

1 голос
/ 11 марта 2020

Вот что я сделал, чтобы решить проблему:

  1. Создано ожидание перед инициализацией драйвера.

stati c WebDriverWait wait;

Создание драйвера и его инициализация.

Драйвер WebDriver = новый ChromeDriver ();

wait = новый WebDriverWait (драйвер, 10) ;

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