获取操作系统和java中文件夹的相对路径
我在本地Windows上编写测试,并创建如下webdriver:获取操作系统和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
@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");