首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

selenium webdriver学习(十六)-用selenium webdriver兑现selenium RC中的类似的方法

2012-06-26 
selenium webdriver学习(十六)----------用selenium webdriver实现selenium RC中的类似的方法最近想总结一

selenium webdriver学习(十六)----------用selenium webdriver实现selenium RC中的类似的方法

最近想总结一下学习selenium webdriver的情况,于是就想用selenium webdriver里面的方法来实现selenium RC中操作的一些方法。目前封装了一个ActionDriverHelper类,来实现RC中Selenium.java和DefaultSelenium.java中的方法。有一些方法还没有实现,写的方法大多没有经过测试,仅供参考。代码如下:

package core;import java.io.File;import java.io.IOException;import java.util.HashSet;import java.util.List;import java.util.Set;import java.util.concurrent.TimeUnit;import org.apache.commons.io.FileUtils;import org.openqa.selenium.By;import org.openqa.selenium.Cookie;import org.openqa.selenium.Dimension;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.Keys;import org.openqa.selenium.NoSuchElementException;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 org.openqa.selenium.WebDriver.Timeouts;import org.openqa.selenium.interactions.Actions;import org.openqa.selenium.support.ui.Select;public class ActionDriverHelper {protected WebDriver driver;public ActionDriverHelper(WebDriver driver){this.driver = driver ;}public void click(By by) {driver.findElement(by).click();}public void doubleClick(By by){new Actions(driver).doubleClick(driver.findElement(by)).perform();}public void contextMenu(By by) {new Actions(driver).contextClick(driver.findElement(by)).perform();}public void clickAt(By by,String coordString) {int index = coordString.trim().indexOf(',');int xOffset = Integer.parseInt(coordString.trim().substring(0, index));int yOffset = Integer.parseInt(coordString.trim().substring(index+1));new Actions(driver).moveToElement(driver.findElement(by), xOffset, yOffset).click().perform();}public void doubleClickAt(By by,String coordString){int index = coordString.trim().indexOf(',');int xOffset = Integer.parseInt(coordString.trim().substring(0, index));int yOffset = Integer.parseInt(coordString.trim().substring(index+1));new Actions(driver).moveToElement(driver.findElement(by), xOffset, yOffset)   .doubleClick(driver.findElement(by))   .perform();}public void contextMenuAt(By by,String coordString) {int index = coordString.trim().indexOf(',');int xOffset = Integer.parseInt(coordString.trim().substring(0, index));int yOffset = Integer.parseInt(coordString.trim().substring(index+1));new Actions(driver).moveToElement(driver.findElement(by), xOffset, yOffset).contextClick(driver.findElement(by)).perform();}public void fireEvent(By by,String eventName) {System.out.println("webdriver 不建议使用这样的方法,所以没有实现。");}public void focus(By by) {System.out.println("webdriver 不建议使用这样的方法,所以没有实现。");}public void keyPress(By by,Keys theKey) {new Actions(driver).keyDown(driver.findElement(by), theKey).release().perform();}public void shiftKeyDown() {new Actions(driver).keyDown(Keys.SHIFT).perform();}public void shiftKeyUp() {new Actions(driver).keyUp(Keys.SHIFT).perform();}public void metaKeyDown() {new Actions(driver).keyDown(Keys.META).perform();}public void metaKeyUp() {new Actions(driver).keyUp(Keys.META).perform();}public void altKeyDown() {new Actions(driver).keyDown(Keys.ALT).perform();}public void altKeyUp() {new Actions(driver).keyUp(Keys.ALT).perform();}public void controlKeyDown() {new Actions(driver).keyDown(Keys.CONTROL).perform();}public void controlKeyUp() {new Actions(driver).keyUp(Keys.CONTROL).perform();}public void KeyDown(Keys theKey) {new Actions(driver).keyDown(theKey).perform();}public void KeyDown(By by,Keys theKey){new Actions(driver).keyDown(driver.findElement(by), theKey).perform();}public void KeyUp(Keys theKey){new Actions(driver).keyUp(theKey).perform();}public void KeyUp(By by,Keys theKey){new Actions(driver).keyUp(driver.findElement(by), theKey).perform();}public void mouseOver(By by) {new Actions(driver).moveToElement(driver.findElement(by)).perform();}public void mouseOut(By by) {System.out.println("没有实现!");//new Actions(driver).moveToElement((driver.findElement(by)), -10, -10).perform();}public void mouseDown(By by) {new Actions(driver).clickAndHold(driver.findElement(by)).perform();}public void mouseDownRight(By by) {System.out.println("没有实现!");}public void mouseDownAt(By by,String coordString) {System.out.println("没有实现!");}public void mouseDownRightAt(By by,String coordString) {System.out.println("没有实现!");}public void mouseUp(By by) {System.out.println("没有实现!");}public void mouseUpRight(By by) {System.out.println("没有实现!");}public void mouseUpAt(By by,String coordString) {System.out.println("没有实现!");}public void mouseUpRightAt(By by,String coordString) {System.out.println("没有实现!");}public void mouseMove(By by) {new Actions(driver).moveToElement(driver.findElement(by)).perform();}public void mouseMoveAt(By by,String coordString) {int index = coordString.trim().indexOf(',');int xOffset = Integer.parseInt(coordString.trim().substring(0, index));int yOffset = Integer.parseInt(coordString.trim().substring(index+1));new Actions(driver).moveToElement(driver.findElement(by),xOffset,yOffset).perform();}public void type(By by, String testdata) {driver.findElement(by).clear();driver.findElement(by).sendKeys(testdata);}public void typeKeys(By by, Keys key) {driver.findElement(by).sendKeys(key);}public void setSpeed(String value) {     System.out.println("The methods to set the execution speed in WebDriver were deprecated");}public String getSpeed() {System.out.println("The methods to set the execution speed in WebDriver were deprecated");return null;}public void check(By by) {if(!isChecked(by))click(by);}public void uncheck(By by) {if(isChecked(by)) click(by);}public void select(By by,String optionValue) {new Select(driver.findElement(by)).selectByValue(optionValue);}public void select(By by,int index) {new Select(driver.findElement(by)).selectByIndex(index);}public void addSelection(By by,String optionValue) {select(by,optionValue);}public void addSelection(By by,int index) {select(by,index);}public void removeSelection(By by,String value) {new Select(driver.findElement(by)).deselectByValue(value);}public void removeSelection(By by,int index) {new Select(driver.findElement(by)).deselectByIndex(index);}public void removeAllSelections(By by) {new Select(driver.findElement(by)).deselectAll();}public void submit(By by) {driver.findElement(by).submit();}public void open(String url) {driver.get(url);}public void openWindow(String url,String handler) {System.out.println("方法没有实现!");}public void selectWindow(String handler) {driver.switchTo().window(handler);}public String getCurrentHandler(){String currentHandler = driver.getWindowHandle();return currentHandler;}public String getSecondWindowHandler(){Set<String> handlers = driver.getWindowHandles();String reHandler = getCurrentHandler();for(String handler : handlers){if(reHandler.equals(handler))  continue;reHandler = handler;}return reHandler;}public void selectPopUp(String handler) {driver.switchTo().window(handler);}public void selectPopUp() {driver.switchTo().window(getSecondWindowHandler());}public void deselectPopUp() {driver.switchTo().window(getCurrentHandler());}public void selectFrame(int index) {driver.switchTo().frame(index);}public void selectFrame(String str) {driver.switchTo().frame(str);}public void selectFrame(By by) {driver.switchTo().frame(driver.findElement(by));}public void waitForPopUp(String windowID,String timeout) {System.out.println("没有实现");}public void accept(){driver.switchTo().alert().accept();}public void dismiss(){driver.switchTo().alert().dismiss();}public void chooseCancelOnNextConfirmation() {driver.switchTo().alert().dismiss();}public void chooseOkOnNextConfirmation() {driver.switchTo().alert().accept();}public void answerOnNextPrompt(String answer) {driver.switchTo().alert().sendKeys(answer);}public void goBack() {driver.navigate().back();}public void refresh() {driver.navigate().refresh();}public void forward() {driver.navigate().forward();}public void to(String urlStr){driver.navigate().to(urlStr);}public void close() {driver.close();}public boolean isAlertPresent() {Boolean b = true;try{driver.switchTo().alert();}catch(Exception e){b = false;}return b;}public boolean isPromptPresent() {return isAlertPresent();}public boolean isConfirmationPresent() {return isAlertPresent();}public String getAlert() {return driver.switchTo().alert().getText();}public String getConfirmation() {return getAlert();}public String getPrompt() {return getAlert();}public String getLocation() {return driver.getCurrentUrl();}public String getTitle(){return driver.getTitle();}public String getBodyText() {String str = "";List<WebElement> elements = driver.findElements(By.xpath("//body//*[contains(text(),*)]"));for(WebElement e : elements){str += e.getText()+" ";} return str;}public String getValue(By by) {return driver.findElement(by).getAttribute("value");}public String getText(By by) {return driver.findElement(by).getText();}public void highlight(By by) {WebElement element = driver.findElement(by);((JavascriptExecutor)driver).executeScript("arguments[0].style.border = "5px solid yellow"",element); }public Object getEval(String script,Object... args) {return ((JavascriptExecutor)driver).executeScript(script,args);}public Object getAsyncEval(String script,Object... args){return  ((JavascriptExecutor)driver).executeAsyncScript(script, args);}public boolean isChecked(By by) {return driver.findElement(by).isSelected();}public String getTable(By by,String tableCellAddress) {WebElement table = driver.findElement(by);int index = tableCellAddress.trim().indexOf('.');int row =  Integer.parseInt(tableCellAddress.substring(0, index));int cell = Integer.parseInt(tableCellAddress.substring(index+1)); List<WebElement> rows = table.findElements(By.tagName("tr")); WebElement theRow = rows.get(row); String text = getCell(theRow, cell); return text;}private String getCell(WebElement Row,int cell){ List<WebElement> cells; String text = null; if(Row.findElements(By.tagName("th")).size()>0){cells = Row.findElements(By.tagName("th"));text = cells.get(cell).getText(); } if(Row.findElements(By.tagName("td")).size()>0){cells = Row.findElements(By.tagName("td"));text = cells.get(cell).getText(); }return text; }public String[] getSelectedLabels(By by) {Set<String> set = new HashSet<String>();    List<WebElement> selectedOptions = new Select(driver.findElement(by))    .getAllSelectedOptions();    for(WebElement e : selectedOptions){    set.add(e.getText());    }return set.toArray(new String[set.size()]);}public String getSelectedLabel(By by) {return getSelectedOption(by).getText();}public String[] getSelectedValues(By by) {Set<String> set = new HashSet<String>();    List<WebElement> selectedOptions = new Select(driver.findElement(by))    .getAllSelectedOptions();    for(WebElement e : selectedOptions){    set.add(e.getAttribute("value"));    }return set.toArray(new String[set.size()]);}public String getSelectedValue(By by) {return getSelectedOption(by).getAttribute("value");}public String[] getSelectedIndexes(By by) {Set<String> set = new HashSet<String>();    List<WebElement> selectedOptions = new Select(driver.findElement(by))    .getAllSelectedOptions();   List<WebElement> options = new Select(driver.findElement(by)).getOptions();    for(WebElement e : selectedOptions){    set.add(String.valueOf(options.indexOf(e)));    }    return set.toArray(new String[set.size()]);}public String getSelectedIndex(By by) {List<WebElement> options = new Select(driver.findElement(by)).getOptions();return String.valueOf(options.indexOf(getSelectedOption(by)));}public String[] getSelectedIds(By by) {Set<String> ids = new HashSet<String>();List<WebElement> options = new Select(driver.findElement(by)).getOptions();for(WebElement option : options){if(option.isSelected()) {ids.add(option.getAttribute("id")) ;}}return ids.toArray(new String[ids.size()]);}public String getSelectedId(By by) {return getSelectedOption(by).getAttribute("id");}private WebElement getSelectedOption(By by){WebElement selectedOption = null;List<WebElement> options = new Select(driver.findElement(by)).getOptions();for(WebElement option : options){if(option.isSelected()) {selectedOption = option;}}return selectedOption;}public boolean isSomethingSelected(By by) {boolean b = false;List<WebElement> options = new Select(driver.findElement(by)).getOptions();for(WebElement option : options){if(option.isSelected()) {b = true ;break;}}return b;}public String[] getSelectOptions(By by) {Set<String> set = new HashSet<String>();    List<WebElement> options = new Select(driver.findElement(by)).getOptions();    for(WebElement e : options){    set.add(e.getText());    }return set.toArray(new String[set.size()]);}public String getAttribute(By by,String attributeLocator) {return driver.findElement(by).getAttribute(attributeLocator);}public boolean isTextPresent(String pattern) {String Xpath= "//*[contains(text(),\'"+pattern+"\')]" ;try { driver.findElement(By.xpath(Xpath));                return true; } catch (NoSuchElementException e) {                 return false; } }public boolean isElementPresent(By by) {return driver.findElements(by).size() > 0;}public boolean isVisible(By by) {return driver.findElement(by).isDisplayed();}public boolean isEditable(By by) {return driver.findElement(by).isEnabled();}public List<WebElement> getAllButtons() {return driver.findElements(By.xpath("//input[@type='button']"));}public List<WebElement> getAllLinks() {return driver.findElements(By.tagName("a"));}public List<WebElement> getAllFields() {return driver.findElements(By.xpath("//input[@type='text']"));}public String[] getAttributeFromAllWindows(String attributeName) {System.out.println("不知道怎么实现");return null;}public void dragdrop(By by,String movementsString) {dragAndDrop(by, movementsString);}public void dragAndDrop(By by,String movementsString) {int index = movementsString.trim().indexOf('.');int xOffset = Integer.parseInt(movementsString.substring(0, index));int yOffset = Integer.parseInt(movementsString.substring(index+1));new Actions(driver).clickAndHold(driver.findElement(by)).moveByOffset(xOffset, yOffset).perform();}public void setMouseSpeed(String pixels) {System.out.println("不支持");}public Number getMouseSpeed() {System.out.println("不支持");return null;}public void dragAndDropToObject(By source,By target) {new Actions(driver).dragAndDrop(driver.findElement(source), driver.findElement(target)).perform();}public void windowFocus() {driver.switchTo().defaultContent();}public void windowMaximize() {driver.manage().window().setPosition(new Point(0,0));java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();Dimension dim = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());driver.manage().window().setSize(dim);}public String[] getAllWindowIds() {System.out.println("不能实现!");return null;}public String[] getAllWindowNames() {System.out.println("不能实现!");return null;}public String[] getAllWindowTitles() {Set<String> handles = driver.getWindowHandles();Set<String> titles = new HashSet<String>();for(String handle : handles){titles.add(driver.switchTo().window(handle).getTitle());}return titles.toArray(new String[titles.size()]);}public String getHtmlSource() {return driver.getPageSource();}public void setCursorPosition(String locator,String position) {System.out.println("没能实现!");}public Number getElementIndex(String locator) {System.out.println("没能实现!");return null;}public Object isOrdered(By by1,By by2) {System.out.println("没能实现!");return null;}public Number getElementPositionLeft(By by) {return driver.findElement(by).getLocation().getX();}public Number getElementPositionTop(By by) {return driver.findElement(by).getLocation().getY();}public Number getElementWidth(By by) {return driver.findElement(by).getSize().getWidth();}public Number getElementHeight(By by) {return driver.findElement(by).getSize().getHeight();}public Number getCursorPosition(String locator) {System.out.println("没能实现!");return null;}public String getExpression(String expression) {System.out.println("没能实现!");return null;}public Number getXpathCount(By xpath) {return driver.findElements(xpath).size();}public void assignId(By by,String identifier) {System.out.println("不想实现!");}/*public void allowNativeXpath(String allow) {commandProcessor.doCommand("allowNativeXpath", new String[] {allow,});}*//*public void ignoreAttributesWithoutValue(String ignore) {commandProcessor.doCommand("ignoreAttributesWithoutValue", new String[] {ignore,});}*/public void waitForCondition(String script,String timeout,Object... args) {Boolean b = false;int time = 0;while(time <= Integer.parseInt(timeout)){b = (Boolean) ((JavascriptExecutor)driver).executeScript(script,args);if(b==true) break;try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}time += 1000;}}public void setTimeout(String timeout) {driver.manage().timeouts().implicitlyWait(Integer.parseInt(timeout), TimeUnit.SECONDS);}public void waitForPageToLoad(String timeout) {driver.manage().timeouts().pageLoadTimeout(Integer.parseInt(timeout), TimeUnit.SECONDS);}public void waitForFrameToLoad(String frameAddress,String timeout) {/*driver.switchTo().frame(frameAddress).manage().timeouts().pageLoadTimeout(Integer.parseInt(timeout), TimeUnit.SECONDS);*/}public String getCookie() {String cookies = "";Set<Cookie> cookiesSet = driver.manage().getCookies();for(Cookie c : cookiesSet){cookies += c.getName()+"="+c.getValue()+";";}return cookies;}public String getCookieByName(String name) {return driver.manage().getCookieNamed(name).getValue();}public boolean isCookiePresent(String name) {boolean b = false ;if(driver.manage().getCookieNamed(name) != null || driver.manage().getCookieNamed(name).equals(null))b = true;return b;}public void createCookie(Cookie c) {driver.manage().addCookie(c);}public void deleteCookie(Cookie c) {driver.manage().deleteCookie(c);}public void deleteAllVisibleCookies() {driver.manage().getCookieNamed("fs").isSecure();}/*public void setBrowserLogLevel(String logLevel) {}*//*public void runScript(String script) {commandProcessor.doCommand("runScript", new String[] {script,});}*//*public void addLocationStrategy(String strategyName,String functionDefinition) {commandProcessor.doCommand("addLocationStrategy", new String[] {strategyName,functionDefinition,});}*/public void captureEntirePageScreenshot(String filename) {File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);try {FileUtils.copyFile(screenShotFile, new File(filename));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*public void rollup(String rollupName,String kwargs) {commandProcessor.doCommand("rollup", new String[] {rollupName,kwargs,});}public void addScript(String scriptContent,String scriptTagId) {commandProcessor.doCommand("addScript", new String[] {scriptContent,scriptTagId,});}public void removeScript(String scriptTagId) {commandProcessor.doCommand("removeScript", new String[] {scriptTagId,});}public void useXpathLibrary(String libraryName) {commandProcessor.doCommand("useXpathLibrary", new String[] {libraryName,});}public void setContext(String context) {commandProcessor.doCommand("setContext", new String[] {context,});}*//*public void attachFile(String fieldLocator,String fileLocator) {commandProcessor.doCommand("attachFile", new String[] {fieldLocator,fileLocator,});}*//*public void captureScreenshot(String filename) {commandProcessor.doCommand("captureScreenshot", new String[] {filename,});}*/public String captureScreenshotToString() { String screen = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BASE64); return screen;}   /* public String captureNetworkTraffic(String type) {        return commandProcessor.getString("captureNetworkTraffic", new String[] {type});    }*/    /*public void addCustomRequestHeader(String key, String value) {        commandProcessor.getString("addCustomRequestHeader", new String[] {key, value});    }*/    /*public String captureEntirePageScreenshotToString(String kwargs) {return commandProcessor.getString("captureEntirePageScreenshotToString", new String[] {kwargs,});}*/public void shutDown() {driver.quit();}/*public String retrieveLastRemoteControlLogs() {return commandProcessor.getString("retrieveLastRemoteControlLogs", new String[] {});}*/public void keyDownNative(Keys keycode) {new Actions(driver).keyDown(keycode).perform();}public void keyUpNative(Keys keycode) {new Actions(driver).keyUp(keycode).perform();}public void keyPressNative(String keycode) {new Actions(driver).click().perform();}public void waitForElementPresent(By by) {for(int i=0; i<60; i++) {if (isElementPresent(by)) {break;} else {try {driver.wait(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}public void clickAndWaitForElementPresent(By by, By waitElement) {click(by);waitForElementPresent(waitElement);}public Boolean VeryTitle(String exception,String actual){if(exception.equals(actual)) return true;else return false;}}

?PS:有什么建议,欢迎评论,一起交流!

热点排行