java—当我将测试导出到可执行jar时,如何在可执行jar文件中包含chrome驱动程序

dwthyt8l  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(373)

我试图将我的测试用例导出到一个可执行的jar中,这样我就可以在任何地方或从任何机器上运行它们,但是我遇到了chrom驱动程序不是由system.property设置的问题。我需要一个解决方案,我可以将我的代码导出到可执行jar,并包括chrome drivre,以便它可以运行在任何机器上,即使它没有chrome drivre上。
我尝试在环境变量和selenium路径中包含chrome驱动程序。我还尝试在projectresources下添加chrome驱动程序,但没有任何效果。

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驱动程序,但在其他机器上它不工作

j9per5c4

j9per5c41#

您可以在项目中创建一个名为driver的文件夹,并可以在该文件夹中插入chromedriver,还可以使用从该位置选择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的确切路径,然后它可以在任何机器上使用。

相关问题