import java.io.File;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/*
*selenium使用selenium截屏
*
*/
class SeleniumWebScreenshots {
//定义Webdriver
WebDriver driver;
//定义访问网址
String baseurl;
@BeforeEach
void setUp() throws Exception {
//谷歌浏览器的本地驱动
System.setProperty("webdriver.chrome.driver", "/Users/lisen/webselenium/selenium/chromedriver");
//new一个谷歌浏览器对象
driver =new ChromeDriver();
//定义访问网址,访问的是去哪网
baseurl="https://www.yahoo.com/";
//打开网址过后,设置隐性等待,等待10秒
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//打开网址后,窗口最大化
driver.manage().window().maximize();
}
@Test
void test() throws Exception {
//打开网址,调用driver.get方法
driver.get(baseurl);
//打印log信息
System.out.println("打开网址完成");
//点击雅虎网站,用id查找登陆按钮
driver.findElement(By.id("uh-signin")).click();
//打印log信息
System.out.println("点击网址完成");
//输入内容
driver.findElement(By.id("login-username")).sendKeys("test");
//点击登陆按钮
driver.findElement(By.id("login-signin")).click();
Thread.sleep(3000);
}
//创建得到随机字符串方法,作为文件名称
public static String Randomstring(int length) {
//新建StringBuilder对象是一个可变的字符序列
StringBuilder sb= new StringBuilder();
String TheFileNamestring="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
for (int i = 0; i < length; i++) {
//Math.random是返回0-1之间的随机数,随机数再乘以字符串的长度,得到的是62之间的一个随机数,强制转换为整数,作为字符串的索引
int index=(int)(Math.random()*TheFileNamestring.length());
//TheFileName.charAt得到的是索引上的字符,sb.append的功能是把所有字符都连接在一起
sb.append(TheFileNamestring.charAt(index));
}
return sb.toString();
}
@AfterEach
//截图具体代码,存放具体目录
void tearDown() throws Exception {
//设置等待时间,看清楚操作
Thread.sleep(2000);
//设置文件扩展名
String filename=Randomstring(10)+".png";
//定义文件存放目录
String Directory="/Users/lisen/jietu";
//以文件的方式输出
File sourceFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//复制文件的功能
FileUtils.copyFile(sourceFile,new File(Directory+filename));
Thread.sleep(3000);
//关闭浏览器
driver.quit();
}
}