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

Java 如何从另一个类访问另一个类的void方法的变量,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,这里驱动程序显示null值,而我需要访问Browserselection.java的getDriver方法的值。我在MyMainClass.java中执行printlnBrowserselection.java具有正确的值;显示null 有没有办法从MyMainClass访问actionPerformed nethod的if条件的d1变量 我是Java新手,正在学习selenium 使用此方法: Code of Broweserselection.java @SuppressW

这里驱动程序显示
null
值,而我需要访问
Browserselection.java
getDriver
方法的值。我在
MyMainClass.java中执行
println
Browserselection.java
具有正确的值;显示
null

  • 有没有办法从MyMainClass访问actionPerformed nethod的if条件的d1变量

  • 我是Java新手,正在学习selenium

    使用此方法:

      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");
    
    请注意,您必须在类中声明driver2,如:
    private WebDriver driver2

    你的全班同学都是这样的:

    public WebDriver getDriver()
        {
          driver2 = new ChromeDriver();
          return this.driver2;          
        }
    
    使用此方法:

      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");
    
    请注意,您必须在类中声明driver2,如:
    private WebDriver driver2

    你的全班同学都是这样的:

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

    问题不在驱动选择中。它位于代码的体系结构中。 请参阅下面的代码,这些代码可能会对您有所帮助

    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;          
        }
    
    }
    
    Main方法将用于刚刚开始的项目,所以不需要在Main方法中创建Browserselection类的对象,而是在实际需要的地方创建该类对象


    希望这将对您有所帮助。

    问题不在驱动选择中。它位于代码的体系结构中。 请参阅下面的代码,这些代码可能会对您有所帮助

    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;          
        }
    
    }
    
    Main方法将用于刚刚开始的项目,所以不需要在Main方法中创建Browserselection类的对象,而是在实际需要的地方创建该类对象


    希望这对您有所帮助。

    您是否调用过setDriver()?什么是代码inBrowserSelection1()方法?调用this.getDriver()的含义是什么;内部设置驱动程序?@AmitBera在BrowserSelection1()中我使用radiobutton组在jFrame中进行用户输入,并基于调用的公共void actionPerformed(ActionEvent e)。这工作正常。根据您的代码驱动程序可以设置为调用
    actionPerformed()
    setDriver()
    方法调用,但我看不到您以前从未在代码中调用过它们
    bs.getDriver()
    您调用过setDriver()吗?什么是代码inBrowserSelection1()方法?调用this.getDriver()的含义是什么;内部设置驱动程序?@AmitBera在BrowserSelection1()中我使用radiobutton组在jFrame中进行用户输入,并基于调用的公共void actionPerformed(ActionEvent e)。这工作正常。根据您的代码驱动程序可以设置为调用
    actionPerformed()
    setDriver()
    方法调用,但我看不出您以前从未在代码中调用过它们
    bs.getDriver()