以下实现的是对屏幕的滚动截图 入参为访问地址url 跟一个排序参数(可省略)
public void seleniumTest(String url,Integer seq){
// 调用驱动
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
try {
// driver.get("http://localhost:8080/nin_composite//practiceEntityBill/gotoBillSet?entityId=283¢erId=120000&businessId=5141&parentId=5139");
// driver.get("http://localhost:8080/nin_composite/practiceEntityBill/gotoBillSet?entityId=283¢erId=120000&businessId=1198&parentId=1197");
// 跳转
driver.get(url);
// 获取div下有几个a标签
WebElement background = driver.findElement(By.xpath("/html/body/div[2]/div[1]/div/div[1]"));
Thread.sleep(1000l);
List<WebElement> aTips = background.findElements(By.tagName("a"));
Integer count = 0;
Integer tipSize = 0;
// 循环
if (CollectionUtils.isNotEmpty(aTips)){
for (WebElement tip :aTips){
tipSize = aTips.size();
count+=1;
// 点击第 count 个标签
WebElement element = tip.findElement(By.xpath("/html/body/div[2]/div[1]/div/div[1]/a[" + count + "]"));
element.click();
Thread.sleep(2000l);
// 点击保存
WebElement btn1 = tip.findElement(By.xpath("/html/body/div[2]/div[2]/div[3]/div[2]/div[7]/div/input[1]"));
btn1.click();
Thread.sleep(2000l);
// 点击预览
WebElement btn2 = tip.findElement(By.xpath("/html/body/div[2]/div[2]/div[3]/div[2]/input[7]"));
btn2.click();
Thread.sleep(2000l);
// 跳入iframe
driver.switchTo().frame("billForm");
// 获取表单上input 框
WebElement element1 = driver.findElement(By.id("code"));
// 根据需求塞值
if (tipSize == 1){
element1.sendKeys(seq.toString());
}else {
element1.sendKeys(seq.toString()+"-"+count.toString());
}
// 跳出iframe
driver.switchTo().defaultContent();
Thread.sleep(1000l);
BufferedImage fullScreen = new AShot()
.shootingStrategy(ShootingStrategies.viewportPasting(100))
.takeScreenshot(driver).getImage();
Thread.sleep(1000l);
// 全屏截图
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
Thread.sleep(1000l);
driver.switchTo().frame("billForm");
WebElement logo = driver.findElement(By.id("LayerBill"));
Thread.sleep(4000l);
// BufferedImage fullScreen = ImageIO.read(srcFile);
org.openqa.selenium.Point location = logo.getLocation();
int width = logo.getSize().getWidth();
int height = logo.getSize().getHeight();
BufferedImage logoImage = fullScreen.getSubimage(53, 245,
width, height);
ImageIO.write(logoImage, "png", new File("d:\\Desktop\\22\\"+seq+"-"+count+".png"));
driver.switchTo().defaultContent();
// Thread.sleep(1000l);
// org.apache.commons.io.FileUtils.copyFile(srcFile, new File("d:\\Desktop\\22\\"+seq+"-"+count+".png")); //使用copyFile()方法保存获取到的截图文件
System.out.println("");
}
}
System.out.println("sssss");
} catch (Exception e) {
e.printStackTrace();
}finally {
driver.quit();
}
}
需要下载一个谷歌驱动支持:
https://registry.npmmirror.com/binary.html?path=chromedriver/
导入pom包
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
<!-- 不添加此依赖会抛com.google.common.util.concurrent.SimpleTimeLimiter.create异常-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>22.0</version>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.2</version>
</dependency>