selenium之webdriver
上一篇 /
下一篇 2012-04-15 16:39:42
/ 个人分类:Selenium
3.
WebDriver常用的函数接口(以HtmlUnitDriver为例)
WebDriver driver = new HtmlUnitDriver();(1)页面导航:driver.get( "http://www.google.com" ); 完全装载页面后将控制返回给测试脚本。注意:当页面又很多AJAX调用时,该接口无法确认页面是否完全装载,这是需要使用"waits"。(2)与页面交互例如:<input type= "text" name= "passwd" id= "passwd-id" />WebElement element;element = driver.findElement(By.id( "passwd-id" ));element = driver.findElement(By.name( "passwd" ));element = driver.findElement(By.xpath( "//input[@id=’passwd-id’]" ));(XPATH返回第一个匹配到的元素,如果没有匹配到,抛出NoSuchElementException)element.sendKeys( "some text" );element.sendKeys( " and some" , Keys.ARROW_DOWN); (按向下箭头)(任何页面元素都可以调用sendKeys,例如可以测试一些快捷方式键,键盘的每次输入都是附加在文本串的后面)element.clear(); 清除文本域内容4、填写表单(1)处理SELECT标签:WebElement select = driver.findElement(By.xpath( "//select" ));List<WebElement> allOptions = select.findElements(By.tagName( "option" ));for (WebElement option : allOptions) {System.out.println(String.format( "Value is: %s" , option.getValue()));option.setSelected();}(2)使用Select类处理SELECT标签:Select select = new Select(driver.findElement(By.xpath( "//select" )));select.deselectAll();select.selectByVisibleText( "Edam" );5、提交:(1)driver.findElement(By.id( "submit" )).click();(2)element.submit();(要求element必须在表单中,否则抛出NoSuchElementException)6、检查元素是否在页面上(并且可以获取元素的尺寸和位置,拖拉元素):WebElement plain = driver.findElement(By.name( "q" ));RenderedWebElement element = (RenderedWebElement) element;(例如HtmlUnit Driver就无法显示出内容)对元素拖拉:RenderedWebElement element = (RenderedWebElement) driver.findElement(By.name( "source" ));RenderedWebElement target = (RenderedWebElement) driver.findElement(By.name( "target" ));element.dragAndDropOn(target);7、在窗口和frame之间移动(1)在命名的窗口之间移动:switchTodriver.switchTo().window( "windowName" ); (可以通过js或者打开窗口的链接获取窗口名称)(2)也可通过窗口句柄切换:for (String handle : driver.getWindowHandles()) {driver.switchTo().window(handle);}(3)frame之间切换或者切换到iframe:driver.switchTo().frame( "frameName" );通过索引访问subframe:driver.switchTo().frame( "frameName.0.child" );(frameName的第一个subframe的明价child的frame)8、弹出对话框:窗口弹出后,可以使用如下语句访问到弹出窗口:Alert alert = driver.switchTo().alert();获取到alert窗口后,可进行各种操作。9、页面导航:navigate().to()和get()功能完全一样。driver.navigate().to( "http://www.example.com" );浏览器的前进和后退driver.navigate().forward();driver.navigate().back();(注意这两个方法取决于浏览器的实现,可以会出现某些调用失败)10、Cookies(必须首先在目标url域上)// Go to the correct domaindriver.get( "http://www.example.com" );// Now set the cookie. This one’s valid for the entire domainCookie cookie = new Cookie( "key" , "value" );driver.manage().addCookie(cookie);// And now output all the available cookies for the current URLSet<Cookie> allCookies = driver.manage().getCookies();for (Cookie loadedCookie : allCookies) {System.out.println(String.format( "%s -> %s" , loadedCookie.getName(), loadedCookie.getValue()));}12、WebDriver支持的浏览器不如Selenium RC多:为了支持更多的浏览器并且使用WebDriver API,可以使用SeleneseCommandExecutorCapabilities capabilities = new DesiredCapabilities()capabilities.setBrowserName( "safari" );CommandExecutor executor = new SeleneseCommandExecutor( "http:localhost:4444/" , "http://WebDriver driver = new RemoteWebDriver(executor, capabilities);这种方法的限制条件:目前findElements方法不能使用,并且首先js沙盒。
收藏
举报
TAG: