博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium应用代码(常见封装的方法一)
阅读量:5872 次
发布时间:2019-06-19

本文共 3878 字,大约阅读时间需要 12 分钟。

常见封装的方法:输入、点击、判断元素是否存在、根据句柄切换窗口、根据title切换窗口、滚动窗口、截图

import java.awt.Rectangle;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;

import javax.imageio.ImageIO;

import org.apache.commons.io.FileUtils;

import org.eclipse.jetty.util.thread.Timeout;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchWindowException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import Study.Day02.TestTabnumDetail;

public class CommonClass {

//封装元素输入的方法
public static int t = 1;
static String dir="F:\\Users\\Wangtest\\screenshots\\dianzhang";
public static void sendKeys(WebDriver driver,By by, String value){

driver.findElement(by).sendKeys(value);

}

//封装元素点击的方法
public static void click(WebDriver driver,By by){

driver.findElement(by).click();

}

//封装判断元素是否存在的方法
public boolean doesWebElementExist(WebDriver driver,By by){
try {
driver.findElement(by);
return false;
} catch (Exception e) {
// TODO: handle exception
return true;
}
}
//封装根据句柄切换窗口的方法
public String getWindowHandle(WebDriver driver){

String currentWindow = driver.getWindowHandle();

return currentWindow;

}

public static void SwitchNewwindow(WebDriver driver){
//得到当前句柄

String currentWindow = driver.getWindowHandle();

//得到所有窗口的句柄

Set<String> handles = driver.getWindowHandles();

 

//排除当前窗口的句柄,则剩下是新窗口

Iterator<String> it = handles.iterator();

while(it.hasNext()){

if(currentWindow == it.next()) continue;

driver.switchTo().window(it.next());

}

}
//封装通过title切换窗口
public boolean switchToWindow(WebDriver driver,String windowTitle){
boolean flag = false;
try {
String currentHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
for (String s : handles) {
if (s.equals(currentHandle))
continue;
else {
driver.switchTo().window(s);
if (driver.getTitle().contains(windowTitle)) {
flag = true;
System.out.println("Switch to window: " + windowTitle + " successfully!");
break; }
else
continue;
}
}
} catch (NoSuchWindowException e) {
System.out.printf("Window:" + windowTitle+ " cound not found!", e.fillInStackTrace());
flag = false;
}
return flag;
}
//将滚动条滚到适合的位置
public static void setScroll(WebDriver driver,int height){
try {
// String setscroll = "document.documentElement.scrollTop=" + height;
String setscroll = "document.body.scrollTop=" + height;
JavascriptExecutor jse=(JavascriptExecutor) driver;
jse.executeScript(setscroll);
} catch (Exception e) {
System.out.println("Fail to set the scroll.");
}
}
// public void TakeScreenShot(WebDriver driver,WebElement element) throws IOException {
// File screen = ((TakesScreenshot) ]this.driver).getScreenshotAs(OutputType.FILE);
//
// Point p = element.getLocation();
//
// int width = element.getSize().getWidth();
// int height = element.getSize().getHeight();
//
// Rectangle rect = new Rectangle(width, height);
//
// BufferedImage img = null;
//
// img = ImageIO.read(screen);
//
// BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width,
// rect.height);
//
// ImageIO.write(dest, "png", screen);
//
// File f = null;
//
// f = new File(dir+getDateTime()+"_"+t+".jpg");
//
// FileUtils.copyFile(screen, f);
//
// }
//获取当前时间
public static String getDateTime(){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");
return df.format(new Date());
}

//封装截图的方法

public static void ScreenShot(WebDriver driver){
File screenShot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(screenShot, new File(dir+getDateTime()+"_"+t+".jpg"));
++t;
} catch (IOException e) {
e.printStackTrace();
}
}

}

转载于:https://www.cnblogs.com/testwang/p/5286703.html

你可能感兴趣的文章
MacBook如何用Parallels Desktop安装windows7/8
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
关于Tomcat下项目中文名在Windows和Linux下编码混乱问题解决
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
记录一些有用的代码技巧,不定期更新
查看>>
Centos 安装后不能上网 解决备忘
查看>>
cisco 交换机链路聚合
查看>>
[AX]AX2012 Form开发概览
查看>>
用几何画板画垂线的方法
查看>>
C++对象模型
查看>>
第九章 Python之面向对象
查看>>
Python标准库——getpass
查看>>
【转】一步一步学Linq to sql(三):增删改
查看>>