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)在命名的窗口之间移动:switchTo
driver.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 domain
driver.get( "http://www.example.com" );
// Now set the cookie. This one’s valid for the entire domain
Cookie cookie = new Cookie( "key" , "value" );
driver.manage().addCookie(cookie);
// And now output all the available cookies for the current URL
Set<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,可以使用SeleneseCommandExecutor
Capabilities capabilities = new DesiredCapabilities()
capabilities.setBrowserName( "safari" );
CommandExecutor executor = new SeleneseCommandExecutor( "http:localhost:4444/" , "http://WebDriver driver = new RemoteWebDriver(executor, capabilities);
这种方法的限制条件:目前findElements方法不能使用,并且首先js沙盒。


TAG:

 

评分:0

我来说两句

日历

« 2024-05-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 74598
  • 日志数: 80
  • 建立时间: 2012-04-12
  • 更新时间: 2013-05-21

RSS订阅

Open Toolbar