selenium web driver 实现截图功能
在验证某些关键步骤时,需要截个图来记录一下当时的情况
Webdriver截图时,需要引入
import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot;
截图方法
public static void snapshot(TakesScreenshot drivername, String filename) { // this method will take screen shot ,require two parameters ,one is driver name, another is file name String currentPath = System.getProperty("user.dir"); //get current work folder System.out.println(currentPath); File scrFile = drivername.getScreenshotAs(OutputType.FILE); // Now you can do whatever you need to do with it, for example copy somewhere try { System.out.println("save snapshot path is:"+currentPath+"/"+filename); FileUtils.copyFile(scrFile, new File(currentPath+"\\"+filename)); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("Can‘t save screenshot"); e.printStackTrace(); } finally { System.out.println("screen shot finished"); } }
以下任务:
1.使用selenium打开百度,截图;
2.输入selenium关键字,截图;
3.搜索 并打开 selenium的百度百科,截图;
具体代码如下:
1 package baidu; 2 3 4 5 import java.io.File; 6 import java.io.IOException; 7 8 9 10 import org.apache.commons.io.FileUtils; 11 12 import org.openqa.selenium.By; 13 import org.openqa.selenium.OutputType; 14 import org.openqa.selenium.TakesScreenshot; 15 import org.openqa.selenium.WebDriver; 16 //import org.openqa.selenium.WebDriver.Navigation; 17 import org.openqa.selenium.WebElement; 18 import org.openqa.selenium.chrome.ChromeDriver; 19 20 21 22 23 public class selenium { 24 25 26 27 public static void snapshot(TakesScreenshot drivername, String filename) 28 { 29 // this method will take screen shot ,require two parameters ,one is driver name, another is file name 30 31 32 File scrFile = drivername.getScreenshotAs(OutputType.FILE); 33 // Now you can do whatever you need to do with it, for example copy somewhere 34 try { 35 System.out.println("save snapshot path is:E:/"+filename); 36 FileUtils.copyFile(scrFile, new File("E:\\"+filename)); 37 } catch (IOException e) { 38 // TODO Auto-generated catch block 39 System.out.println("Can‘t save screenshot"); 40 e.printStackTrace(); 41 } 42 finally 43 { 44 System.out.println("screen shot finished"); 45 } 46 } 47 48 public static void main (String [] args) throws InterruptedException 49 { 50 51 52 String URL="http://www.baidu.com"; 53 System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe"); 54 WebDriver driver = new ChromeDriver(); 55 driver.get(URL); 56 //max size the browser 57 driver.manage().window().maximize(); 58 /* 59 Navigation navigation = driver.navigate(); 60 navigation.to(URL);*/ 61 Thread.sleep(2000); 62 snapshot((TakesScreenshot)driver,"open_baidu.png"); 63 //WebElement reg=driver.findElement(By.name("tj_reg")); 64 //reg.click(); 65 // WebElement keyWord = driver.findElement(By.id("kw1")); 66 67 //find the element 68 WebElement keyWord = driver.findElement(By.xpath("//input[@id=‘kw1‘]")); 69 keyWord.clear(); 70 //send key words 71 keyWord.sendKeys("Selenium"); 72 Thread.sleep(3000); 73 snapshot((TakesScreenshot)driver,"input_keyWord.png"); 74 75 76 77 WebElement submit = driver.findElement(By.id("su1")); 78 79 System.out.println(submit.getLocation()); 80 submit.click(); 81 //System.out.println(driver.getWindowHandle()); 82 Thread.sleep(5000); 83 84 // System.out.println(driver.getPageSource()); 85 86 String pageSource=driver.getPageSource(); 87 // System.out.println(pageSource); 88 //WebElement link =driver.findElement(By.xpath(SELENIUM_LINK)); 89 WebElement link =driver.findElement(By.xpath("//*[@id=\"1\"]/h3/a")); //*[@id="1"]/h3/a 90 link.click(); 91 Thread.sleep(5000); 92 driver.switchTo().window(driver.getWindowHandles().toArray(new String[0])[1]); 93 94 //get page title 95 System.out.println(driver.getTitle()); 96 Thread.sleep(5000); 97 // navigation.back(); 98 snapshot((TakesScreenshot)driver,"open_bake.png"); 99 System.out.println(driver.getTitle()+"\n"+driver.getCurrentUrl()); 100 101 102 103 driver.quit(); 104 105 106 } 107 108 }
在百度搜索结果中,拿到你想要的elements,可以使用浏览器的查看元素,通过xpath方法获取
console输出:
Starting ChromeDriver (v2.9.248315) on port 33834
save snapshot path is:E:/open_baidu.png
screen shot finished
save snapshot path is:E:/input_keyWord.png
screen shot finished
(858, 179)
Selenium_百度百科
save snapshot path is:E:/open_bake.png
screen shot finished
Selenium_百度百科
http://baike.baidu.com/subview/478050/6464537.htm?fr=aladdin
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。