获取OS系统和java中文件夹的相对路径

时间:2017-11-12 21:47:13

标签: java selenium selenium-webdriver selenium-chromedriver

我在我的本地Windows上编写了测试,并创建了这样的webdriver:

@BeforeMethod
@Parameters("browser")
public void setUp(String browser) throws Exception {
    if (browser.equalsIgnoreCase("chrome")) {
        System.out.println("Chrome test starting ...");
        System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver_win.exe");
        webDriver = new ChromeDriver();
    }        
    else {
        throw new Exception("Browser is not supported");
    }

对于setProperty,我使用Chrome驱动程序的硬路径,但我想通过检查操作系统以使用适用于Windows和Mac的驱动程序来更改相对路径。有人能给我一个暗示吗?感谢

3 个答案:

答案 0 :(得分:1)

为什么要将chromedriver放入src?您的jar在运行时将需要该文件夹。

源代码和二进制文件应在生产环境中放在一起。

创建一个libs文件夹,并将所有类型的chromedrivers放入其中。名字略有变化。

chromedriver_mac
chromedriver_win
chromedriver_linux

<强>代码

@BeforeMethod
@Parameters("browser")
public void setUp(String browser) throws Exception {
    if (browser.equalsIgnoreCase("chrome")) {
        System.out.println("Chrome test starting ...");
        System.setProperty("webdriver.chrome.driver", getChromeDriverPath());
        webDriver = new ChromeDriver();
    }        
    else {
        throw new Exception("Browser is not supported");
    }
}
public static String getChromeDriverPath() {
      String OS = System.getProperty("os.name");

        if (OS.contains("Window")) {
            return "libs/chromedriver_win"
        } else if (OS.contains("Mac")) {
            return "libs/chromedriver_mac"
        } else {
            return "libs/chromedriver_linux"
        }
}

答案 1 :(得分:1)

通过使用配置属性文件,您可以获得浏览器类型和Chrome驱动程序位置。

您可以在工作区中创建一个名为驱动程序的文件夹并粘贴您的Chrome驱动程序

以下是config.properties文件

browserType=Chrome
ChromeDriver = Drivers/chromedriver.exe

以下是在不同操作系统上运行chrome驱动程序的代码

String os = System.getProperty("os.name");
public String currentBrowser;
if(CONFIG.getProperty("browserType").contains(","))
{
  data=currentBrowser;
}
if (os.contains("Windows")) 
{     
    else if (data.equals("Chrome")) {
    APP_LOGS.debug("Chrome Browser Opening Method Start");
    DesiredCapabilities capability = DesiredCapabilities.chrome();
    // To Accept SSL certificate
    capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    System.setProperty("webdriver.chrome.driver",
            CONFIG.getProperty("ChromeDriver"));
    Thread.sleep(10000);
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

    long 
    implicitWaitTime=Long.parseLong(CONFIG.getProperty("implicitwait"));
    driver.manage().timeouts().implicitlyWait(implicitWaitTime, 
    TimeUnit.SECONDS);
    driver.manage().window().maximize();
}
    return os;
}

答案 2 :(得分:0)

以下代码应该有效,

if(type.equalsIgnoreCase("CHROME"))
{
  log.info("Executing Operating System = "+System.getProperty("os.name").toLowerCase());
  String osname =System.getProperty("os.name");
  if(osname.toLowerCase().contains("windows")) System.setProperty("webdriver.chrome.driver","src/test/resources/chromedriver.exe" );
  else if(osname.toLowerCase().contains("linux"))
  {
    String filepathtoset = System.getProperty("user.dir")+"/src/test/resources/chromedriver";
    System.setProperty("webdriver.chrome.driver",filepathtoset );
  } 
  else System.setProperty("webdriver.chrome.driver","src/test/resources/chromedrivermac");