简体   繁体   English

我如何从另一个类访问另一个类的void方法的变量

[英]How do i access variable of void method of other class from another class

  Code of Broweserselection.java 


    @SuppressWarnings("serial")
        class Browserselection extends JFrame implements ActionListener
        { 
         public void BrowserSelection1()
         { Some code...}

         @Override
         public void actionPerformed(ActionEvent e)
         {
           WebDriver d1 = null;

           if(FireFox.isSelected())
            {
             dispose();
             System.setProperty("webdriver.gecko.driver","driverPath");
             d1 = new  FirefoxDriver();
            }

          this.setDriver(d1);
         }

        public WebDriver setDriver(WebDriver driver)
        {
          this.driver2 = driver;
          this.getDriver();

          return this.driver2;
        }

        public WebDriver getDriver()
        {
          return this.driver2;          
        }

===========================================================================

Code of MyMainClass.java

    public class MyMainClass{

        public static void main(String[] args) throws InterruptedException, IOException {

            Browserselection bs= new Browserselection();
            bs.BrowserSelection1();
            WebDriver driver=bs.getDriver();
            System.out.println(driver + "Hello from main");
  1. here driver shows null value while i need to access of value of Browserselection.java 's getDriver method's value. 在这里驱动程序显示null值,而我需要访问Browserselection.javagetDriver方法的值。 I do println Browserselection.java has proper value while in MyMainClass.java bs.getDriver() ; 我在MyMainClass.java bs.getDriver() println Browserselection.java具有适当的值bs.getDriver() ; shows null . 显示null

  2. is there any way to access d1 variable of actionPerformed nethod's if condition from MyMainClass? 有什么办法可以从MyMainClass中访问actionPerformed nethod的d1变量?

I am new to Java and learning selenium. 我是Java和学习硒的新手。

Use this method : 使用此方法:

public WebDriver getDriver()
    {
      driver2 = new ChromeDriver();
      return this.driver2;          
    }

Note that you have to declare the driver2 in your class like : private WebDriver driver2; 注意,您必须在类中声明driver2,例如: private WebDriver driver2;

Your whole class would look like this : 您的整个课堂看起来像这样:

public class Browserselection {

   private WebDriver driver2;

    public void BrowserSelection1()
     {
        //some code 
     }

     @Override
     public void actionPerformed(ActionEvent e)
     {
       WebDriver d1 = null;

       if(FireFox.isSelected())
        {
         dispose();
         System.setProperty("webdriver.gecko.driver","driverPath");
         d1 = new  FirefoxDriver();
        }

      this.setDriver(d1);
     }

    public WebDriver setDriver(WebDriver driver)
    {
      this.driver2 = driver;
      this.getDriver();

      return this.driver2;
    }

    public WebDriver getDriver()
    {
      driver2 = new ChromeDriver();
      return this.driver2;          
    }

}

Issue is not in drived selection. 驱动选择中不存在问题。 it is in architecture of your code. 它是您代码的体系结构。 see below code might help you. 请参阅下面的代码可能会帮助您。

@SuppressWarnings("serial")
    class Browserselection extends JFrame implements ActionListener
    { 
     public void BrowserSelection1(String selectedBrower)
     { 
         WebDriver d1 = null;

        if(selectedBrower.equals("firefox")){
            d1 = new  FirefoxDriver();  
        }else if(selectedBrower.equals("firefox")){
            d1 = new  ChromeDriver();   
        }
     }
     /*  
      As per this code , your input from user will be received in this method
     */
     @Override
     public void actionPerformed(ActionEvent e)
     {
       String driverSelected = "";
        if(FireFox.isSelected()){
            driverSelected =  "firefox";
        }else if(Chrome.isSelected()){
            driverSelected =  "chrome";
        }
        Browserselection bs= new Browserselection();
        bs.BrowserSelection1(driverSelected);

     }
}

Main method will be used for just start your project, so no need to create object of Browserselection class in main method, rather create that class object where it actually require. Main方法将仅用于启动项目,因此无需在main方法中创建Browserselection类的对象,而是在实际需要的位置创建该类对象。

Hope this will help you. 希望这会帮助你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM