Вызов / настройка webdriver из файла DriverSetup. java в файле NameLocator - PullRequest
0 голосов
/ 06 августа 2020

Я не могу правильно установить драйвер здесь. Мой вывод возвращает NULL. Я пытаюсь настроить драйвер из класса driverSetup и получить значение заполнителя.

public class NameLocator 
{
    String fName;  
    static WebDriver driver;  
    
    public WebDriver setupDriver()
    {
        /*Invoke the getWebDriver method from the DriverSetup File*/
        DriverSetup ds = new DriverSetup();
       
        driver =  ds.getWebDriver();
        return driver;
    
    public String getNameLocator()
    {
       /*Identify the Firstname
         Get the placeholder value
         Store the placeholder value in the static variable fName.*/
     
        if (fName!=null)
        
        fName = driver.findElement(By.name("fname")).getAttribute("placeholder");
        return fName;
    }
    
    public static void main(String[] args) throws NullPointerException
    {
        NameLocator namLocator=new NameLocator();
        
        String name=namLocator.getNameLocator();
        System.out.println("The name is "+name);
    }

}

DriverSetup. java класс, в котором приведены все сведения о драйвере, мне нужно использовать это в классе namelocator и найти значение заполнителя для имени. Пожалуйста, помогите мне заставить код работать

    public class DriverSetup
    { 
        private static WebDriver driver;
        
        @BeforeClass
        public static WebDriver getWebDriver()
        {
            System.setProperty("webdriver.gecko.driver", "/usr/bin/geckodriver");
            FirefoxBinary firefoxBinary = new FirefoxBinary();
            firefoxBinary.addCommandLineOptions("--headless");
            FirefoxProfile profile=new FirefoxProfile();
            //profile.setPreference("marionette.logging", "TRACE");
            FirefoxOptions firefoxOptions = new FirefoxOptions();
            firefoxOptions.setBinary(firefoxBinary);
            firefoxOptions.setProfile(profile);
            driver=new FirefoxDriver(firefoxOptions);
            String baseUrl = "http://webapps.tekstac.com/Shopify/";
            driver.get(baseUrl);
        return driver;
    }
}

1 Ответ

0 голосов
/ 06 августа 2020

Ваша программа запускается с основной функции и вызывает метод getNameLocator , который использует объект webdriver. Ваш метод setupDriver , который получает объект webdriver из getWebDriver , никогда не выполнялся, поскольку вы его нигде не вызывали.

Вместо этого ->

 public WebDriver setupDriver()
{
    /*Invoke the getWebDriver method from the DriverSetup File*/
    DriverSetup ds = new DriverSetup();
   
    driver =  ds.getWebDriver();
    return driver;
}

Go с конструктором ->

public NameLocator ()
{
    /*Invoke the getWebDriver method from the DriverSetup File*/
    DriverSetup ds = new DriverSetup();
   
    driver =  ds.getWebDriver();
    return driver;
}

Объяснение того, как работает мой код конструктора -> как только вы создадите объект для Класс NameLocator в основном методе, вызывается Конструктор NameLocator. Конструктор inturn получает инициализированный объект webdriver из getWebDriver метода

...