Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将初始化的驱动程序存储在Java列表中,但在获取它们时显示为null_Java_Selenium - Fatal编程技术网

将初始化的驱动程序存储在Java列表中,但在获取它们时显示为null

将初始化的驱动程序存储在Java列表中,但在获取它们时显示为null,java,selenium,Java,Selenium,在Java中的selenium代码中,我必须使用多个驱动程序。所以我在类中声明它们并将它们存储在列表中。然后在一个方法中,我初始化它们,但当我使用get(index函数)获取它们时,我将它们的值获取为null,但如果我直接使用它们,则会出现值。见下文: 在此,我宣布我的司机: public static WebDriver driver1 = null; public static WebDriver driver2 = null; public static WebDriver driver3

在Java中的selenium代码中,我必须使用多个驱动程序。所以我在类中声明它们并将它们存储在列表中。然后在一个方法中,我初始化它们,但当我使用get(index函数)获取它们时,我将它们的值获取为null,但如果我直接使用它们,则会出现值。见下文:

在此,我宣布我的司机:

public static WebDriver driver1 = null;
public static WebDriver driver2 = null;
public static WebDriver driver3 = null;
public static WebDriver driver4 = null;
public static WebDriver driver5 = null;
public static WebDriver driver6 = null;
现在,我将它们存储在一个列表中:

public List<WebDriver> Drivers = Arrays.asList(driver1, driver2, driver3, driver4, driver5, driver6);
getDriver的代码:

public WebDriver getDriver() {

    WebDriver driver = null;
    ChromeOptions options = new ChromeOptions();
    if(System.getProperty("os.name").contains("Windows")){
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"\\src\\test\\resources\\ChromeDriver\\chromedriver.exe");
    }


    options.addArguments("--test-type");
    options.addArguments("--start-maximized"); 
    options.addArguments("--use-fake-device-for-media-stream"); 
    options.addArguments("--use-fake-ui-for-media-stream");

    //Initializing a driver 
    driver = new ChromeDriver(options);
    return driver;
}

现在,当我直接以driver1的形式获取驱动程序时,我在其中获取驱动程序,但当我使用list drivers.get(1)获取驱动程序时,我获取的值为null。非常感谢您的帮助。提前感谢。

按照下面给出的方式更新您的代码

更改1:驱动程序应该是静态的

public static List<WebDriver> Drivers = Arrays.asList(driver1, driver2, driver3, driver4, driver5, driver6);

你能为getDriver方法添加代码吗?@Murthi,为getDriver添加了代码。列表索引以0开头。可能您可以尝试使用Drivers.get(0),启动浏览器后应该调用它。我这样做了(Drivers.get(0))。我正在启动浏览器,然后从列表中获取值,但它仍然不起作用。但当我简单地使用driver1时,它就可以工作了。这是因为我在声明驱动程序之后将值存储在列表中,然后启动浏览器吗?如果使用array as list,它将创建内部数组,因此它将不同。请参考我的答案。这可能会解决您的问题。您能否像在
change 1
中那样简要介绍
change 2
中的更改?感谢改变2。我只是想更改驱动程序列表的值。因为它在初始化时指向空值。要更改列表的位置值,我们可以使用它的set方法。谢谢Murthi,但是如果我更改代码driver1=getDriver(),它会工作吗;到驱动程序。get(0)=getDriver()??否,将其更改为Drivers.set(0,getDriver());
public static List<WebDriver> Drivers = Arrays.asList(driver1, driver2, driver3, driver4, driver5, driver6);
public void initializeDrivers(String driver) throws InterruptedException, AWTException, IOException {

    if(driver.equals("driver1") && driver1==null) {
        System.out.println("First browser is opening");
        driver1 = getDriver();
        Drivers.set(0, driver1);
    } else if(driver.equals("driver2") && driver2==null) {
        System.out.println("Second browser is opening");
        driver2 = getDriver();
        Drivers.set(1, driver2);
    } else if(driver.equals("driver3") && driver3==null) {
        System.out.println("Third browser is opening");
        driver3 = getDriver();
        Drivers.set(2, driver3);
        System.out.println("Login with qa softphone 1");
        SFLP.softphoneLogin(driver3, CONFIG.getProperty("qa_test_site_name"), CONFIG.getProperty("qa_user_3_username"), CONFIG.getProperty("qa_user_3_password"));
        //setDefaultSetting(driver3);
    } else if(driver.equals("driver4") && driver4==null) {
        System.out.println("Fourth browser is opening");
        driver4 = getDriver();
        Drivers.set(3, driver4);
    } else if(driver.equals("driver5") && driver5==null) {
        System.out.println("Fifth browser is opening");
        driver5 = getDriver();
        Drivers.set(4, driver5);
    } else if(driver.equals("driver6") && driver6==null) {
        System.out.println("Sixth browser is opening");
        driver6 = getDriver();
        Drivers.set(5, driver6);
    }
}