您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
Selenium WebDriver高级用法
作者:网络转载 发布时间:[ 2015/2/11 15:18:45 ] 推荐标签:Selenium 功能测试工具 单元测试

  掌握selenium初级用法后,来继续深入学习。
  选择合适的WebDrvier
  WebDriver是一个接口,它有几种实现,分别是HtmlUnitDrvier、FirefoxDriver、InternetExplorerDriver、ChromeDriver、OperaDriver,除了 InternetExplorerDriver只能在Windows平台运行,其他WebDriver均能跨平台。
  如果追求运行速度,HtmlUnitDriver是,但是它没有运行界面,不能实时看到运行效果。如果想看到运行效果,可以使用FirefoxDrvier,它会真正打开浏览器,在屏幕上运行,因此我们可以监测页面元素的位置、CSS的值等,但是代价是速度慢。
  这里为了简单,使用 HtmlUnitDriver.
  <code>WebDriver  driver = new HtmlUnitDriver();</code>
  导航
  有了WebDriver实例,第一件事情是打开页面。一般的做法是调用get方法:
  <code>driver.get("http://www.yeetrack.com");</code>
  WebDriver会一直等待,直到页面加载完毕(也是”onload”方法释放)。
  和页面进行交互
  仅仅打开页面还不够,我们需要的是在页面上进行操作,进一步讲是要操作页面中的html元素,如:
  <code><input type="text" name="passwd" id="passwd-id" /></code>
  要操作页面元素,首先要定位元素,可以通过多种方法定位,如下:
  <code>WebElement element;
  element = driver.findElement(By.id("passwd-id"));
  element = driver.findElement(By.name("passwd"));
  element = driver.findElement(By.xpath("//input[@id='passwd-id']"));</code>
  定位元素时,有两点要注意。通过text的值来定位一个Link时,text必须精确匹配;通过xpath来定位元素时,如果匹配到多条,只会返回第一条结果,如果没有匹配到,会抛NoSuchElementException异常。
  WebDriver拥有”Object-baseed” API,我们可以使用WebElement来表示所有的页面元素。WebElement类有很多操作元素的方法,但是有些方法可能对当前元素无效,不用担 心,WebDriver会尽力帮我们处理。如,对一个”meta”标签元素,我们调用了WebElement的”SetSelected()”方 法,WebDriver会抛出异常。
  我们定位到一个Element,接下来,我们可能要进行一些操作,如想键入一些字符:
  <code>element.sendKeys("sone text");</code>
  当然,我们也可以通过”Keys”这个类,来模拟键盘输入:
  <code>element.sendKeys(" and some", Keys.ARROW_DOWN);</code>
  记住,我们向这些元素输入的字符串,它们不会自动清空,也是说调用”sendKeys()”方法,是向元素中追加字符串。如果要清空一个input标签或者textarea:
  <code>element.clear();</code>
  填写表单
  已经知道了如何键入字符串,那么其他元素呢?如checkboxes,如何选中;”OPTION”标签,如何设置”setSelected()”。下面是处理Select标签的例子:
<code>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.getAttribute("value")));
option.click();
}</code>
  上面的代码,首先定位一个Select元素,然后获取它下面的所有option,并且打印出来,执行一个click操作。明显,如果想选中某个选 中,这种方法不是佳选择。其实WebDrvier定义了Select类,它提供一些更快捷的方式, 如”selectByIndex()”、”selectByValue()”。
  表单填写完毕,然后是提交,我们可以通过点击提交按钮,进行提交。
  <code>driver.findElement(By.id("submit")).click();</code>
  或者,WebElement提供”submit()”这个方法,如果当前元素处在form表单中,调用该元素的submit方法,WebDriver会自动提交这个表单;如果不处于form表单中,会抛出”NoSuchElementException”异常。
  <code>element.submit();</code>

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd