如何 运行 测试而不在 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");
我想避免在下面的方法中为 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");