文档地址
安装
xml
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.19.1</version>
</dependency>
使用
创建WebDriver实例
以chrome为例, 创建
java
ChromeOptions co = new ChromeOptions();
co.setCapability("webSocketUrl", true); //BiDi功能需要添加这个配置
co.addArguments("--headless"); //无头浏览器
WebDriver driver = new ChromeDriver(chromeOptions);
/*********************************************
* 操作 *
**********************************************/
driver.quit();
打开目标页面
java
driver.get("https://www.selenium.dev/selenium/web/web-form.html");
捕捉截图
首先要开启bidi功能
截图可以选择截取一个页面的图, 也可以选择某一元素进行截图
先看一个截取某一页面的代码例子:
java
// 首先创建一个BrowserContext对象
BrowsingContext bc = new BrowsingContext(driver, driver.getWindowHandle());
String base64Str = bc.captureScreenshot();
截图返回的数据是一个图片的base64编码字符串
如果将截图文件保存到一个文件中, 可以参考如下代码
java
byte[] decode = Base64.getDecoder().decode(base64Str);
try(FileOutputStream fos = new FileOutputStream(new File("test.png"))){
fos.write(decode);
fos.close();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
这段代码会把截图文件保存为test.png文件中
如果想要截取某一个元素节点截图, 我们可以使用如下代码
java
WebElement element = driver.findElement(new By.ByClassName("py-2"));
String base64Str = bc.captureElementScreenshot(((RemoteWebElement)element).getId());
这样, 我们就可以把左侧表单元素截图保存下来