Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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中文件夹的相对路径_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

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

获取操作系统和java中文件夹的相对路径,java,selenium,selenium-webdriver,selenium-chromedriver,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.setPropert

我在本地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的驱动程序来将路径更改为相对路径。有人能给我一个提示吗。谢谢

你为什么要把
chromedriver
放在
src
里?运行时,您的
jar
将需要这些文件夹

源代码和二进制文件应该而不是放在生产环境中

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

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"
        }
}

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

您可以在工作空间中创建一个名为Drivers的文件夹,然后粘贴您的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;
}

下面的代码应该可以工作

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");