Java Selenium封装--RemoteWebDriver
来源:互联网 发布:20式82毫米迫击炮数据 编辑:程序博客网 时间:2024/06/08 11:13
1 package com.selenium.driver; 2 import java.io.File; 3 import java.io.IOException; 4 import java.net.URL; 5 import java.util.HashMap; 6 import java.util.Map; 7 import java.util.Set; 8 import java.util.regex.Matcher; 9 import java.util.regex.Pattern; 10 import org.apache.commons.io.FileUtils; 11 import org.openqa.selenium.Alert; 12 import org.openqa.selenium.Capabilities; 13 import org.openqa.selenium.Cookie; 14 import org.openqa.selenium.JavascriptExecutor; 15 import org.openqa.selenium.NoSuchElementException; 16 import org.openqa.selenium.OutputType; 17 import org.openqa.selenium.TakesScreenshot; 18 import org.openqa.selenium.WebDriver; 19 import org.openqa.selenium.WebElement; 20 import org.openqa.selenium.remote.Augmenter; 21 import org.openqa.selenium.remote.RemoteWebDriver; 22 import org.openqa.selenium.remote.RemoteWebElement; 23 public class JSWebDriver{ 24 private RemoteWebDriver wd = null; 25 private JavascriptExecutor jse = null; 26 27 public JSWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { 28 wd = new RemoteWebDriver(remoteAddress, desiredCapabilities); 29 } 30 31 /// 32 ///浏览器url导航 33 /// 34 public void goTo(String url){ 35 wd.get(url); 36 } 37 38 /// 39 ///浏览器退出 40 /// 41 public void quit(){ 42 wd.quit(); 43 } 44 45 /// 46 ///浏览器后退 47 /// 48 public void back(){ 49 wd.navigate().back(); 50 } 51 52 /// 53 ///浏览器前进 54 /// 55 public void forward(){ 56 wd.navigate().forward(); 57 } 58 59 /// 60 ///浏览器刷新 61 /// 62 public void refresh(){ 63 wd.navigate().refresh(); 64 } 65 66 /// 67 ///切换到新浏览器窗口;按照title、url、index;支持正则匹配 68 /// 69 public void switchToWindow(String by, String value, String...match) throws Exception{ 70 String currenthandle = wd.getWindowHandle(); 71 Set<String> handles = wd.getWindowHandles(); 72 int currentIndex = -1; 73 String searchString = ""; 74 for(String handle : handles){ 75 currentIndex += 1; 76 if(handle.equals(currenthandle)){ 77 continue; 78 }else{ 79 wd.switchTo().window(handle); 80 if (match.length == 1 && match[0].equals("regex")){ 81 if (by.equals("title")){ 82 searchString = wd.getTitle(); 83 }else if (by.equals("url")){ 84 searchString = wd.getCurrentUrl(); 85 } 86 Pattern pattern = Pattern.compile(value); 87 Matcher matcher = pattern.matcher(searchString); 88 if(matcher.find()){ 89 return; 90 } 91 }else{ 92 if (by.equals("title")){ 93 searchString = wd.getTitle(); 94 }else if (by.equals("url")){ 95 searchString = wd.getCurrentUrl(); 96 }else if (by.equals("index")){ 97 searchString = Integer.toString(currentIndex); 98 } 99 if(searchString.equals(value)){100 return;101 }102 }103 }104 }105 Exception e = new Exception("Swtich Window Failed, Please Make Sure The Locator Was Right.");106 throw e;107 }108 109 ///110 ///JS弹框确认111 ///112 public void clickAlertSure(){113 Alert alert = wd.switchTo().alert();114 alert.accept();115 }116 117 ///118 ///JS弹框取消119 ///120 public void clickAlertDismiss()121 {122 Alert alert = wd.switchTo().alert();123 alert.dismiss();124 }125 126 ///127 ///设置prompt弹框内容128 ///129 public void setPromptMessage(String parameter){130 Alert alert = wd.switchTo().alert();131 alert.sendKeys(parameter);132 }133 134 ///135 ///获取JS弹框内容136 ///137 public String getPromptMessage(){138 Alert alert = wd.switchTo().alert();139 return alert.getText();140 } 141 142 ///143 ///切换到Frame窗口;先定位到iframe元素144 ///145 public void switchToFrame(JSWebElement jselement){ 146 wd.switchTo().frame(jselement.getNativeWebElement());147 }148 149 ///150 ///执行JS脚本151 ///152 public void executeScript(String parameter){153 JavascriptExecutor js = getJSE();154 js.executeScript(parameter);155 }156 157 ///158 ///获取指定cookie159 ///160 public String getCookie(String name){161 Cookie cookie=wd.manage().getCookieNamed(name);162 if (cookie == null){ return "null"; }163 return cookie.getValue();164 }165 166 ///167 ///获取所有cookie168 ///169 public Map<String, String> getCookies(){170 Map<String, String> newCookies = new HashMap<String, String>();171 Set<Cookie> cookies= wd.manage().getCookies();172 for (Cookie cookie : cookies){173 newCookies.put(cookie.getName(), cookie.getValue());174 }175 return newCookies;176 }177 178 ///179 ///截取屏幕180 ///181 public void getScreen(String filepath){182 WebDriver augmentedDriver = new Augmenter().augment(this.wd); 183 TakesScreenshot ts = (TakesScreenshot) augmentedDriver;184 File screenShotFile = ts.getScreenshotAs(OutputType.FILE); 185 try { 186 FileUtils.copyFile (screenShotFile, new File(filepath)); 187 }catch (IOException e){ 188 e.printStackTrace(); 189 } 190 }191 192 ///193 ///获取title194 ///195 public String getTitle(){196 return wd.getTitle();197 } 198 199 ///200 ///获取url201 ///202 public String getUrl(){203 return wd.getCurrentUrl();204 }205 206 ///207 ///获取HTML源码208 ///209 public String getSource(){210 try {211 Thread.sleep(500);212 } catch (InterruptedException e) {213 e.printStackTrace();214 }215 return wd.getPageSource();216 }217 218 ///219 ///滚动页面到指定位置220 ///221 public void scroll(String x, String y){222 if (x.equals("left")){223 x = "0";224 }else if (x.equals("right")){225 x = "document.body.scrollWidth";226 }else if (x.equals("middle")){227 x = "document.body.scrollWidth/2";228 }229 if (y.equals("top")){230 y = "0";231 }else if (y.equals("buttom")){232 y = "document.body.scrollHeight";233 }else if (y.equals("middle")){234 y = "document.body.scrollHeight/2";235 }236 this.executeScript(String.format("scroll(%s,%s);", x, y));237 }238 239 ///240 ///最大化浏览器241 ///242 public void maximize(){243 wd.manage().window().maximize();244 }245 246 public JSWebElement findElementById(String using) {247 try {248 return new JSWebElement((RemoteWebElement)wd.findElementById(using));249 }catch (NoSuchElementException e){250 return new JSWebElement();251 }252 }253 254 public JSWebElement findElementByCssSelector(String using) {255 try {256 return new JSWebElement((RemoteWebElement)wd.findElementByCssSelector(using));257 }catch (NoSuchElementException e){258 return new JSWebElement();259 }260 }261 262 public JSWebElement findElementByXPath(String using) {263 try {264 return new JSWebElement((RemoteWebElement)wd.findElementByXPath(using));265 }catch (NoSuchElementException e){266 return new JSWebElement();267 }268 }269 270 public JSWebElement findElementByLinkText(String using) {271 try {272 return new JSWebElement((RemoteWebElement)wd.findElementByLinkText(using));273 }catch (NoSuchElementException e){274 return new JSWebElement();275 }276 }277 278 public JSWebElement findElementByDom(String using) {279 try {280 JavascriptExecutor js = this.getJSE();281 WebElement we = (WebElement)js.executeScript(String.format("return %s", using)); 282 return new JSWebElement((RemoteWebElement)we);283 }catch (NoSuchElementException e){284 return new JSWebElement();285 }286 }287 288 ///289 ///获取原生的RemoteWebdriver对象290 ///291 public RemoteWebDriver getNativeWebDriver(){292 return this.wd;293 }294 295 private JavascriptExecutor getJSE(){296 if (this.jse == null){297 this.jse = (JavascriptExecutor) this.wd; 298 } 299 return jse;300 }301 }
0 0
- Java Selenium封装--RemoteWebDriver
- Java Selenium封装--RemoteWebDriver
- selenium(java)之RemoteWebDriver的基本使用
- selenium(java)之RemoteWebDriver的基本使用
- selenium之RemoteWebDriver远程测试
- RemoteWebDriver
- Java Selenium封装--RemoteWebElement
- Java Selenium封装--RemoteWebElement
- selenium自动化-java-封装断言
- 封装selenium
- RemoteWebdriver Profile
- 基于selenium-java封装chrome、firefox、phantomjs实现爬虫
- selenium Webdriver 封装方法
- selenium封装WebDriver
- Selenium 封装与重用
- selenium二次封装
- Selenium常用函数封装
- selenium封装常用方法
- GitHub for windows 使用方法
- 【LoadRunner】OSGI性能测试实例
- Android APP测试的日志文件抓取
- Java Selenium封装--RemoteWebElement
- 如何把n个点n-1条边转换为1棵树
- Java Selenium封装--RemoteWebDriver
- Android 4.0.3 CTS 测试
- popen的用法及与system调用的区别
- linux实用的日志分析脚本
- jenkins 邮件配置
- 安装GeoIP数据库
- dmcms调取获取扩展字段值
- Eclipse安装SVN插件及使用说明
- testng对失败时截图处理