0


WebDriverManager自动管理浏览器Driver包

WebDriverManager是什么?

WebDriverManager是一个开源 Java 库,它以全自动方式管理(即下载、设置和维护) Selenium WebDriver所需的驱动程序(例如,chromedriver、geckodriver、msededriver 等)。此外,WebDriverManager 还提供了其他相关功能,例如发现本地系统中安装的浏览器、构建 WebDriver 对象(如ChromeDriver、FirefoxDriver、EdgeDriver等)以及在 Docker 容器中无缝运行浏览器的能力。
正如上面所说的WebDriverManager有很多功能,今天主要分享自动管理Selenium WebDriver所需的驱动程序的功能。由于我们公司会强制浏览器升级,所以不得不重新下载对应版本的 WebDriver。使用WebDriverManager后只要浏览器升级了,也会自动下载对应版本的Web Driver版本。

WebDriverManager源码地址:GitHub地址
如何使用WebDriverManager

如果你的项目是使用maven创建的,只需要在pom文件中加上下面的依赖包

<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.3.1</version><scope>compile</scope></dependency>

添加好依赖以后就可以在项目中使用了,以后就可以告别手动更新webDriver了。

importorg.junit.jupiter.api.AfterEach;importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.chrome.ChromeDriver;importio.github.bonigarcia.wdm.WebDriverManager;classChromeCreateTest{WebDriver driver;@BeforeEachvoidsetup(){
        driver =WebDriverManager.chromedriver().create();
        driver.get("https://www.baidu.com/");
        driver.findElement(By.id("su")).click();}@AfterEachvoidteardown(){
        driver.quit();}@Testvoidtest(){// Your test logic here}}

获取下载的webDriver路径和版本

WebDriverManager webDriverManager =WebDriverManager.chromedriver().setup();
webDriverManager.getDownloadedDriverPath();
webDriverManager.getDownloadedDriverVersion()

截取部分方法名称和描述,更多说明可以移步官方文档
在这里插入图片描述
最后分享一个web自动化屏幕录制功能。

//tag::snippet-in-doc[]importstaticjava.lang.invoke.MethodHandles.lookup;importstaticorg.slf4j.LoggerFactory.getLogger;importstaticorg.testng.Assert.fail;importjava.io.File;importjava.time.Duration;importjava.util.concurrent.TimeUnit;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.support.ui.ExpectedConditions;importorg.openqa.selenium.support.ui.WebDriverWait;importorg.slf4j.Logger;importio.github.bonigarcia.wdm.WebDriverManager;importorg.testng.annotations.AfterClass;importorg.testng.annotations.BeforeClass;importorg.testng.annotations.Test;publicclassRecordChromeTest{staticfinalLogger log =getLogger(lookup().lookupClass());staticfinalintREC_TIMEOUT_SEC=10;staticfinalintPOLL_TIME_MSEC=100;staticfinalStringREC_FILENAME="myRecordingChrome";staticfinalStringREC_EXT=".webm";WebDriver driver;File targetFolder;WebDriverManager wdm =WebDriverManager.chromedriver().watch();@BeforeClassvoidsetup(){
        driver = wdm.create();
        targetFolder =newFile(System.getProperty("user.home"),"Downloads");}@AfterClassvoidteardown(){
        driver.quit();}@Testpublicvoidtest()throwsInterruptedException{
        driver.get("https://bonigarcia.dev/selenium-webdriver-java/slow-calculator.html");

        wdm.startRecording(REC_FILENAME);// 1 + 3
        driver.findElement(By.xpath("//span[text()='1']")).click();
        driver.findElement(By.xpath("//span[text()='+']")).click();
        driver.findElement(By.xpath("//span[text()='3']")).click();
        driver.findElement(By.xpath("//span[text()='=']")).click();// ... should be 4, wait for itWebDriverWait wait =newWebDriverWait(driver,Duration.ofSeconds(10));
        wait.until(ExpectedConditions.textToBe(By.className("screen"),"4"));

        wdm.stopRecording();long timeoutMs =System.currentTimeMillis()+TimeUnit.SECONDS.toMillis(REC_TIMEOUT_SEC);File recFile;do{
            recFile =newFile(targetFolder,REC_FILENAME+REC_EXT);if(System.currentTimeMillis()> timeoutMs){fail("Timeout of "+REC_TIMEOUT_SEC+" seconds waiting for recording "+ recFile);break;}Thread.sleep(POLL_TIME_MSEC);}while(!recFile.exists());

        log.debug("Recording available at {}", recFile);}}//tag::snippet-in-doc[]

底层代码实现,不依赖WebDriverManager使用selenium也可以实现

((JavascriptExecutor)this.driver).executeScript("window.postMessage({ type: \"startRecording\", name: \""+ recordingName +"\" });",newObject[0]);

WebDriverManager还有很多好玩的功能没有去研究,看了一下有个和docker有关的功能似乎还不错。可以在docker上面跑自动化用例,似乎还能显示docker中的画面。有时间再去研究一下怎么玩的。


本文转载自: https://blog.csdn.net/hm372788571/article/details/127930333
版权归原作者 hm372788571 所有, 如有侵权,请联系我们删除。

“WebDriverManager自动管理浏览器Driver包”的评论:

还没有评论