首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Selenium VS Webdriver(5)

Selenium VS Webdriver(5)

从 Selenium RC 迁移到 WebDriver步骤    在 Selenium 2 发布之前,很多测试团队已经开始使用 Selenium 的 Selenium RC 并构建了成熟的测试框架,那么重构并将原有的测试脚本迁移到 Selenium 2 上无疑是一项非常巨大的工作。幸好 Selenium 2 提供了相应的 WebDriver 做为支持。
    WebDriverBackendSelenium 为用户提供 Selenium 的实现,即是,我们已经使用 Selenium API 编写的测试脚本,可以在 WebDriver 下面使用。比如我们要在 Firefox 上面进行测试,在创建 selenium 实例的时候,可以修改为:
1
2
WebDriver driver = new FirefoxDriver();
Selenium selenium = new WebDriverBackedSelenium(driver, "https://apps.na.collabserv.com/");




编译并运行测试,会发现还会存在一些 fail 的地方,这意味着你需要重新调试代码,使已有的测试脚本完全的支持 WebDriver。下面是笔者在做移植的时候遇到的一些问题:
  • waitForPageToLoad():在移植到 WebDriver 后,会 fail 到测试脚本,所以需要重写来支持页面等待
  • fireEvent():例如实现 mouseover 的功能,在移植后可以使用 Action 类来实现,它给用户提供了一些模拟用户交互的方法,比如 mouse_to 等
  • keyUp,keyDown,KeyPress:在原来的 Selenium 的代码中大量应用了这几个方法,在移植后统一用 sendKeys()来代替了,这也正正说明了 WebDriver 有着更为简洁的 API
    在移植的时候不同的自动化测试项目遇到的问题可能是不同的,但基本都是可以在 WebDriver 中找到相应的解决方法。事实上,单单完成上面的步骤是非常容易使原有使用 Selenium 的代码运行在 WebDriver 上面,但完成移植还有重要的一步就是重写代码使它使用 WebDriver API,这个就比较依赖于原来的代码的设计,如果调用 Selenium API 的方法遍布于 testcase、task 层等等,那么可能就需要比较长的时间来完全使用 WebDriver API 了。所以一个自动化测试项目的设计也是非常重要的。
使测试脚本兼容 Selenium 和 WebDriver      既然现在 Selenium 和 WebDriver 还各有优势,我们可以灵活设计自己的自动化测试项目,使其能够根据测试需求来选择测试工具。比如,测试 Safari,我们可以选择 Selenium,测试 Firefox,Chrome 等等就选择使用 WebDriver。这样的话,就需要抽象出更加灵活的自动化测试框架,比如,我们可以根据页面测试元素类型来抽象出不同的 widgets,例如 WebLink,WebText 等等,对这个元素的操作都封装在 widget 之内,那么在编写测试脚本的时候可以很大程度的使测试脚本和测试工具相分离,不仅可以使得测试脚本能够支持不同的测试工具,也使得在移植测试脚本的时候可以最大限度的降低工作量。
返回列表