Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 TestNG中的WebDriver实例共享<;测试>;_Java_Webdriver_Testng_Instance - Fatal编程技术网

Java TestNG中的WebDriver实例共享<;测试>;

Java TestNG中的WebDriver实例共享<;测试>;,java,webdriver,testng,instance,Java,Webdriver,Testng,Instance,目前,我必须在@Before方法中的每个类中创建WebDriver实例。我想知道如何只创建一次WebDriver并在不同的测试中使用它(testng.xml文件中的标记)。有很多方法可以实现这一点。一种方法是创建一个公共驱动程序类 public class Driver { public static WebDriver driver=null; public static WebDriver startdriver(String browser){

目前,我必须在
@Before
方法中的每个类中创建WebDriver实例。我想知道如何只创建一次WebDriver并在不同的测试中使用它(
testng.xml
文件中的
标记)。

有很多方法可以实现这一点。一种方法是创建一个公共驱动程序类

public class Driver {

    public static WebDriver driver=null;



    public static WebDriver startdriver(String browser){


        if(browser.equalsIgnoreCase("Chrome")){

        System.setProperty("webdriver.chrome.driver", "/home/vicky/Documents/Jars/chromedriver");

        driver=new ChromeDriver();

        }else if(browser.equals("Firefox")){

        driver=new FirefoxDriver();

        }
        return driver;

        }

    }
在before-suite方法中初始化驱动程序

@BeforeSuite
    public static void Openbrowser() {

        Driver.startdriver("Firefox");

        Driver.driver.manage().window().maximize();

    }

 //use the driver instance

  @Test

         public void goto(){

         //Accessing the driver static variable by using classname.variable(Driver.driver)

         Driver.driver.get("http://www.google.com")

}

希望这对您有所帮助…如果您需要任何进一步的帮助,请返回。

有很多方法可以实现这一点。一种方法是创建一个通用驱动程序类

public class Driver {

    public static WebDriver driver=null;



    public static WebDriver startdriver(String browser){


        if(browser.equalsIgnoreCase("Chrome")){

        System.setProperty("webdriver.chrome.driver", "/home/vicky/Documents/Jars/chromedriver");

        driver=new ChromeDriver();

        }else if(browser.equals("Firefox")){

        driver=new FirefoxDriver();

        }
        return driver;

        }

    }
在before-suite方法中初始化驱动程序

@BeforeSuite
    public static void Openbrowser() {

        Driver.startdriver("Firefox");

        Driver.driver.manage().window().maximize();

    }

 //use the driver instance

  @Test

         public void goto(){

         //Accessing the driver static variable by using classname.variable(Driver.driver)

         Driver.driver.get("http://www.google.com")

}
希望这对您有所帮助…如果您需要任何进一步的帮助,请返回

您可以在onStart方法中实例化一个webdriver实例,您可以在测试方法中使用它。在onFinish方法中退出。这将在测试标记中的所有类中的所有方法之间共享驱动程序实例,并为所有测试标记创建驱动程序的新实例

确保您的parallel设置为tests或false。

您可以在onStart方法中实例化一个webdriver实例,您可以在测试方法中使用它。在onFinish方法中退出。这将在测试标记中的所有类中的所有方法之间共享驱动程序实例,并为所有测试标记创建驱动程序的新实例


确保您的并行设置为tests或false。

Static将导致同一实例位于所有测试标记中。BeforeSuite将导致所有测试标记使用相同的驱动程序实例。如果他有多个测试标签,以上这些都不起作用。@niharika_neo感谢您的否决票。关于您的信息,这将对多个测试标记非常有效,因为我们在Prefore suite方法中初始化驱动程序类,然后对我在一些项目中使用过的所有测试方法使用相同的驱动程序实例。它非常有效fine@Vikcky 当testng.xml中有多个测试时,并行执行测试为真时,代码将无法工作。它必须是一个实例变量。Niharika是对的。@Shamik我同意这对于并行测试来说不是一个可行的解决方案,但在他的问题中,调查问卷没有提到任何关于并行执行的内容,而且Niharika在她的评论中提到,它对多个测试标签无效,但对多个测试标签有效,我猜这是解释的不同:)现在只有提问者知道他想要什么:)静态会导致相同的实例出现在所有测试标签中。BeforeSuite将导致所有测试标记使用相同的驱动程序实例。如果他有多个测试标签,以上这些都不起作用。@niharika_neo感谢您的否决票。关于您的信息,这将对多个测试标记非常有效,因为我们在Prefore suite方法中初始化驱动程序类,然后对我在一些项目中使用过的所有测试方法使用相同的驱动程序实例。它非常有效fine@Vikcky 当testng.xml中有多个测试时,并行执行测试为真时,代码将无法工作。它必须是一个实例变量。Niharika是对的。@Shamik我同意这对于并行测试来说不是一个可行的解决方案,但在他的问题中,调查问卷没有提到任何关于并行执行的内容,而且Niharika在她的评论中提到,它对多个测试标签无效,但对多个测试标签有效,我猜这是不同的解释:)现在只有调查者知道他想要什么:)如果你想让多个测试并行运行,你不能有效地使用webdriver的单个实例。如果你同意顺序执行,你可以使用下面的答案。如果你想让多个测试并行运行,你不能有效地使用webdriver的单个实例。如果您同意顺序执行,您可以使用下面的答案。