Невозможно передать Selenium WebDrivers между двумя классами, используя Java на Eclipse - PullRequest
0 голосов
/ 25 августа 2018

Я новичок в Selenium Webdriver, и у меня возникают проблемы при передаче драйверов между классами. Класс драйвера использует регистр переключателя, чтобы определить, какой драйвер пользователь хочет использовать, Firefox или Chrome. Как только пользователь выбирает один, загружается правильный драйвер, и пользователь спрашивает, хотят ли они запустить Facebook или Twitter. Когда я выбираю любой из них, драйвер возвращает нулевое значение вместо перехода к правильному URL. Ниже приведена ошибка, которую я получаю. Я запускаю это на Eclipse с использованием Java.

Исключение в потоке "main" java.lang.NullPointerException в

selenium.social.facebook (social.java:32) на

selenium.social. (Social.java:13) на

selenium.driver. (Driver.java:23) в

selenium.main.main (main.java:19)

Ниже используется код:

ГЛАВНЫЙ КЛАСС

  package selenium;
import java.util.Scanner;
public class main {
    private static int bflag = 0;   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
           System.out.println("Which browser would you like to run");
           System.out.println("1. Chrome ");
           System.out.println("2. Firefox");
        Scanner input = new Scanner(System.in);
        bflag = input.nextInt();
        driver frame =new driver();
}   
  public static int getFlagValue()

  {
    return bflag;}}

КЛАСС ВОДИТЕЛЯ

    package selenium;

import java.util.Scanner;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class driver {

    private static int socialflag = 0;
    public static WebDriver driver;


    public driver() {

        switch (main.getFlagValue()) {

          case 1:

            chrome();
            socialsite();
            social frame = new social();

            break;

          case 2:

            firefoxdriver();
            socialsite();
            social frame1 = new social();
            break;

          default:

            break;
        }
        }

public void chrome() 
{
System.setProperty("webdriver.chrome.driver", "/Users/lcren1026/Drivers/chromedriver");
ChromeDriver driver = new ChromeDriver();  
}

public  void firefoxdriver() 
{
  //Points to the browser driver
System.setProperty("webdriver.gecko.driver", "/Users/lcren1026/Drivers/geckodriver");     
FirefoxDriver driver = new FirefoxDriver();
}

public void socialsite()
{
     System.out.println("Which social site would you like to run with the browser selected?");
       System.out.println("1. Facebook ");
       System.out.println("2. Twitter");

        Scanner input = new Scanner(System.in);
        socialflag = input.nextInt();
}

  public static int getSFlagValue()

  {
    return socialflag;
  }

  public static WebDriver getDriverFlagValue()

  {
    return driver;
  }}

СОЦИАЛЬНЫЙ КЛАСС

package selenium;

import org.openqa.selenium.WebDriver;

public class social {

     public social() {

            switch (driver.getSFlagValue()) {

              case 1:

                facebook();

                break;

              case 2:

                twitter();

                break;

              default:

                break;
            }
            }

        public void facebook() 
        {       
        //WebDriver drive = driver.getDriverFlagValue();    
        driver.getDriverFlagValue().navigate().to( "www.facebook.com");     
    }   

    public void twitter() 
    {   
        //WebDriver drive = driver.getDriverFlagValue();    
    driver.getDriverFlagValue().navigate().to( "www.twitter.com");  
    }}

1 Ответ

0 голосов
/ 25 августа 2018

Я понял.

'driver = new ChromeDriver ();' вместо 'ChromeDriver driver = new ChromeDriver ();' работы.

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