我在我的本地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的驱动程序来更改相对路径。有人能给我一个暗示吗?感谢
答案 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");