如何使用System.set ...在类级别初始化chrome驱动程序?

时间:2013-04-02 06:36:28

标签: java webdriver testng

我一直在使用Firefox来运行我的测试用例。但现在我想使用Chrome。我想在类级别初始化chrome,就像我使用Firefox一样。但是在类级别设置系统属性会出错,我该怎么办?使用属性文件将起作用,如果是,如何??

public class BaseClass {
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver"); 
public static WebDriver driver = new ChromeDriver();

public void test(){
driver.get("http://asdf.com");

----
---
 }

}

4 个答案:

答案 0 :(得分:3)

你用这样的静态初始化程序块冷却它:

public class BaseClass {

  static {
    System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
  }

  protected WebDriver driver = new ChromeDriver();

  @Test
  public void test(){
    driver.get("http://asdf.com");
  }
}

由于您尚未说明您使用的是哪种测试框架,您可能会在TestNG(我建议无论如何)中这样做:

public class BaseClass {

  @BeforeSuite
  public void setupChromeDriver() {
    System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
  }

  public static WebDriver driver = new ChromeDriver();

  public void test(){
    driver.get("http://asdf.com");
  }
}

@BeforeSuite注释确保在运行测试套件的第一次测试之前执行该方法,所以这应该足够早。

答案 1 :(得分:1)

请以这种方式声明..它应该有效

public class abcd {


public static WebDriver driver;


@BeforeMethod
public static void start() 
{
    File file = new File("D:/abcd/chromedriver.exe");
    System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
    driver = new ChromeDriver();
            }
}

它应该工作..我有同样的错误。但是当你用这种方式初始化它就有效。请尝试告诉我们。

如果你不想关闭浏览器会话,请尝试使用@BeforeClass和@AfterClass。它在整个测试之前运行一次

答案 2 :(得分:0)

System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");

这一行应该进入一个方法,你不能直接在你的类体内使用它

答案 3 :(得分:0)

为什么不尝试在基类的@BeforeTest方法中初始化Chrome驱动程序。我所做的就是这样:

public class BaseTest { 

    /*
     * 
     * This is a base class for all Test classes that we'll create to write tests in.
     * A test-data set will belong to one/set of tests.
     */


    protected WebDriver driver;
    protected CustomLogger logger;
    protected DependencyChecker dcheck;
    protected TestDataReader td;
    protected PropReader p;
    protected HashMap<String, String> testDataMap;
    private String testDataFilePath;


    protected BaseTest(String testDataFilePath) 
    {
        this.testDataFilePath = testDataFilePath;
        p = new PropReader("environmentConfig.properties");
    }


    @BeforeTest(description="Preparing environment for the test..")
    public void prepareTest()
    {

        //other code
        System.setProperty(p.get("chromeDriverName"),p.get("chromeDriverPath"));
        File chrome = new File("/usr/bin/google-chrome");
        ChromeOptions options = new ChromeOptions();
        options.setBinary(chrome);
        logger.log("Launching browser..");
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        //other code        
    } 
    }


我不知道你为什么要在课堂上初始化它。上面的代码完全正常。