Java 当我将测试导出到可执行Jar时,如何在可执行Jar文件中包含Chrome驱动程序
我正试图将我的测试用例导出到一个可执行的jar中,这样我就可以在任何地方或任何机器上运行它们,但是我遇到了Chrom驱动程序不是由system.Property设置的问题。我需要一个解决方案,我可以将我的代码导出到可执行的jar中,并包含Chrome Drivre,这样即使没有Chrome Drivre,它也可以在任何机器上运行 我尝试在环境变量和Selenium路径上包含Chrome驱动程序。 我还尝试在项目资源下添加Chrome驱动程序,但没有任何效果Java 当我将测试导出到可执行Jar时,如何在可执行Jar文件中包含Chrome驱动程序,java,selenium-chromedriver,Java,Selenium Chromedriver,我正试图将我的测试用例导出到一个可执行的jar中,这样我就可以在任何地方或任何机器上运行它们,但是我遇到了Chrom驱动程序不是由system.Property设置的问题。我需要一个解决方案,我可以将我的代码导出到可执行的jar中,并包含Chrome Drivre,这样即使没有Chrome Drivre,它也可以在任何机器上运行 我尝试在环境变量和Selenium路径上包含Chrome驱动程序。 我还尝试在项目资源下添加Chrome驱动程序,但没有任何效果 public
public WebDriver OpenCPURL() {
PropertyConfigurator.configure("Log4j.properties");
//System.setProperty("webdriver.chrome.driver",
"./chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
//driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
//driver.manage().window().maximize();
wait = new WebDriverWait(driver, 60);
baseUrl = "http://3ddxtesting/newcp/";
driver.get(baseUrl);
user_name = driver.findElement(By.name("username"));
Pass = driver.findElement(By.name("password"));
user_name.sendKeys(username);
Log.info(username);
Pass.sendKeys(Password);
WebElement LoginButton = driver
.findElement(By.xpath("//*[@id=\"contentDiv\"]/form/table/tbody/tr[4]/td[4]/input"));
LoginButton.click();
String Pageheader = driver.findElement(By.cssSelector("#body > nav > a > font")).getText();
assertEquals(Pageheader, "3D | Diagnostix");
return driver;
}
这里我把这个方法叫做:
公共类添加\u 3D\u打印机\u订单{
CommonLogin Login = new CommonLogin();
WebDriver driver = Login.OpenCPURL();
driver.findElement(By.id("printerCheck")).click();
Thread.sleep(2000);
String Pageheader_printer = driver.findElement(By.cssSelector("#locationId")).getText();
assertEquals(Pageheader_printer, "Add Order > Printer & Acc");
System.out.println("the assertion is done and the application navigate to the 3d printer page");
Log.info("the application navigate to the 3d printer page succssfully");
此代码运行于任何机器上具有相同路径的Chrome驱动程序的任何位置,但在其他机器上它不工作您可以在项目中创建一个带有名称驱动程序的文件夹,并可以将chromedriver插入该文件夹中,您可以使用
System.getProperty(“user.dir”)
例如,在创建名为driver
的文件夹,然后在其中添加chromedriver
后,使用这行代码:
System.setProperty(“webdriver.chrome.driver”、System.getProperty(“user.dir”)+“/driver/chromedriver”);
这里
System.getProperty(“user.dir”)
将为您提供项目目录路径,然后在其中添加/driver/chromedriver
将为您提供chromedriver的确切路径,然后它可以在任何机器上使用。您可以在项目中创建一个名为driver的文件夹,并可以将chromedriver插入该文件夹中,然后您可以选择chromedriver f使用System.getProperty(“user.dir”)
例如,在创建名为driver
的文件夹,然后在其中添加chromedriver
后,使用这行代码:
System.setProperty(“webdriver.chrome.driver”、System.getProperty(“user.dir”)+“/driver/chromedriver”);
这里
System.getProperty(“user.dir”)
将为您提供项目目录路径,然后添加/driver/chromedriver
将为您提供chromedriver的确切路径,然后它可以在任何机器上使用。我以前已经尝试过此解决方案,但当我将测试提取到可执行jar并在没有chromedriv的机器上运行时呃,我得到了一个错误,在这个路径中找不到chrome驱动程序你编码的操作系统和你运行脚本的操作系统是一样的?是的,它是bothI上的Windows 10。我以前已经尝试过这个解决方案,但是当我将测试提取到一个可执行的jar,并在没有chrome驱动程序的机器上运行它时,我得到了一个错误,找不到chr此路径中的ome驱动程序编码的操作系统和运行脚本的操作系统是相同的?是的,两者都是Windows 10