Selenium - Maven -可以更改Selenium配置以自动检测浏览器版本并下载webdriver吗?

rryofs0p  于 2022-11-22  发布在  Maven
关注(0)|答案(2)|浏览(143)

我必须在maven中自动化测试用例运行配置。下载合适的Chrome或Firefox webdriver也是其中的一部分。
在pom.xml的build标记下

<plugin>
            <groupId>com.github.webdriverextensions</groupId>
            <artifactId>webdriverextensions-maven-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>install-drivers</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <installationDirectory>${testbench.driver.path}/drivers</installationDirectory>
              <drivers>
                <driver>
                  <name>geckodriver</name>
                  <platform>windows</platform>
                  <version>0.29.0</version>
                </driver>
                <driver>
                  <name>chromedriver</name>
                  <platform>windows</platform>
                  <version>90.0.4430.24</version>
                </driver>
              </drivers>
            </configuration>
          </plugin>
 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.17</version>
        <executions>
          <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>integration-test</goal>
            </goals>
          </execution>
          <execution>
            <id>failsafe-verify</id>
            <phase>verify</phase>
            <goals>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <trimStackTrace>false</trimStackTrace>
          <systemPropertyVariables>
            <webdriver.chrome.driver>${testbench.driver.path}/drivers/chromedriver-windows-32bit.exe</webdriver.chrome.driver>
            <webdriver.gecko.driver>${testbench.driver.path}/drivers/geckodriver-windows-64bit.exe</webdriver.gecko.driver>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <!-- The Jetty plugin allows us to easily test the development build by
        running jetty:run on the command line. -->
      <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <configuration>
          <scanIntervalSeconds>2</scanIntervalSeconds>
          <stopKey>STOP</stopKey>
          <stopPort>8005</stopPort>
        </configuration>
        <executions>
          <execution>
            <id>start-jetty</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>start</goal>
            </goals>
            <configuration>
              <scanIntervalSeconds>0</scanIntervalSeconds>
            </configuration>
          </execution>
          <execution>
            <id>stop-jetty</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>stop</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

在这里我手动输入了要下载和安装的chrome驱动程序的版本。但是我希望开发者的机器能自动检测到oorwser版本并自动下载相应的驱动程序。如果我没有提到驱动程序的版本,我会在构建过程中出错。
这怎么可能呢?我需要对Chrome和Firefox webdriver的支持。

zaq34kh6

zaq34kh61#

您可以使用WebDriver Manager API。-它会将driver.exe下载到您的/m2/repository/webdriver文件夹(使用Maven时)。它还会自动检查您的浏览器版本并下载匹配版本的driver.exe。
要使用Webdriver Manager API,请在pom.xml文件中包含以下行:

<dependency>

<groupId>io.github.bonigarcia</groupId>

<artifactId>webdrivermanager</artifactId>

<version>3.6.2</version>

<scope>test</scope>

</dependency>
  • 然后,在初始化Webdriver对象之前,在代码中调用以下行:
//Call any of the line based on which browser you are using.

WebDriverManager.chromedriver().setup();

WebDriverManager.firefoxdriver().setup();

WebDriverManager.iedriver().setup();

WebDriverManager.operadriver().setup();

WebDriverManager.phantomjs().setup();

WebDriverManager.edgedriver().setup();

这样就可以省去以下步骤:
1)手动下载驱动程序二进制文件并将其放置在
2)下面的代码行也需要删除:

System.setProperty("webdriver.chrome.driver", "path to your driver location");

更多信息here

ycl3bljg

ycl3bljg2#

正在添加最新答案。
从版本Selenium 4.6.0开始,不需要使用第三个WebDriverManager。相反,Selenium内置了对SeleniumManager类的支持。Selenium管理器支持所有浏览器,包括Chrome、Edge和Firefox。无需手动下载任何驱动程序,因为它将从SeleniumManager自动处理。
实施步骤:
将POM文件中的Selenium升级到4.6.0。

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java ->
    <dependency>
     <groupId>org.seleniumhq.selenium</groupId>
     <artifactId>selenium-java</artifactId>
     <version>4.6.0</version>
     </dependency>

chrome的代码实现示例如下,不需要添加任何额外的代码行来处理它,类似的实现也适用于其他浏览器[目前是beta版]。更多信息请参考link

WebDriver driver = new ChromeDriver();
   driver.get("https://someurl");

相关问题