如何 运行 测试而不在 Action class 中为 IE/Chrome WebDriver 和 运行 仅使用 pom 文件中的 Maven 依赖项传递本地相对路径

How to run tests without passing local relative path in Action class for the IE/Chrome WebDriver and run using only maven dependencies in pom file

我想避免在下面的方法中为 IE/Chrome 驱动程序提供相对路径或绝对路径。相反,我想从 pom 文件调用 IE/Chrome 驱动程序作为 Maven 依赖项。我不想使用下面的本地路径,而是想传递 pom 依赖路径来调用驱动程序。你能请任何人指导我吗?

public static void openBrowser(String data) throws Exception{

        if(data.equals("IE")){              
            File file = new File("C:\Automation\external jars\IE Related\IEDriverServer.exe");
            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
            driver = new InternetExplorerDriver();
            driver.manage().window().maximize();
            }
        else (data.equals("Chrome")){
            File file = new File("C:\Automation\external jars\Drivers\ChromeDriver\chromedriver.exe");
            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
            driver=new ChromeDriver();
            driver.manage().window().maximize();
            }       

}

首先,通过将工件及其内部可执行驱动程序文件解压到项目某处,复制依赖项 这是您在 pom(配置文件或默认构建)中需要的示例:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>

    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-resources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                       <groupId>org.seleniumhq.selenium</groupId> 
                       <artifactId>selenium-ie-driver</artifactId>
                       <version>3.0.1</version>
                    </artifactItem>
                </artifactItems>
          </configuration>
      </execution>
   </executions>
</plugin>

之后您应该在文件夹 ${project.build.directory}/dependency 中找到该文件,或者配置插件以将其解压到您想要的位置。

如果需要,您可以从这里将文件复制到任意位置。如果你想要它与你的项目相关,你可以使用像“${project.build.directory}”这样的maven vars或者甚至源目录。

                <!-- copy driver file -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.1</version>
                    <executions>
                        <execution>
                            <id>copy-resources</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.directory}/driverDir</outputDirectory>
                                <resources>
                                    <resource>
                                        <include>driver.file</include>
                                        <directory>${project.build.directory}/dependency</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

你可以提供给 selenium.Lets 的这个文件假设你把它放到类路径上的 "src/main/resources" 中你应该能够通过

在 Java 中找到这个文件
MyClass.class.getResource("/driver.file");