WebDriver 是按照server – client 的经典设计模式设计的。
server 端就是remote server,能够是任意的浏览器。当咱们的脚本启动浏览器后,该浏览器就是remote
server,它的职责就是等待client 发送请求并作出相应。
client 端简单说来就是咱们的测试代码,咱们测试代码中的一些行为,好比打开浏览器,转跳到特定
的url 等操做是以http 请求的方式发送给被测试浏览器,也就是remote server;remote server 接受请求,
并执行相应操做,并在response 中返回执行状态、返回值等信息。
webdriver 的工做流程:
1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,作为WebDriver 的remote
server。
2. Client 端经过CommandExcuter 发送HTTPRequest 给remote server 的侦听端口(通讯协议: the
webriver wire protocol)
3. Remote server 须要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转化转
化浏览器的native 调用。
总结:
对于碰到的一些常见功能,如何经过技巧来定位它们,
可是在实际的自动化脚本开发中,不论是新手仍是具备必定经验的老手,所遇到最多的问题仍然是元素的
定位。
有时元素定位很是简单,例如,咱们只要知道这个元素有的id 和name 就能够轻松的来定位到它;有
时元素的定位却很是的使人头疼,尽管咱们想尽了办法,仍然没法定位到它。在这里笔者也没万能的方法
来帮你解决这些实际问题。
对于不一样的web 项目,所用到的前端技术也不一样,有些项目会用到EXT(一个强在的js 类库),有
些会用到AJAX(一种建立交互式网页应用的网页开发技术),这些技术的应用无疑对于前端开发人员可
以快速的生成所须要的页面,但对于UI 自动化测试人员来讲,增长了定位页面元素的难度。
因此,在进行项目实现UI 自动化评估的时候,页面元素的定位难度也是一个评估标准,若是到处都
是很难定位的元素,那么无疑会增长脚本的开发与维护的成本,得不偿失。这个时候我能够考虑将更新多
的精力放在单元或接口层的自动化上。
对于自动化测试人员来讲,若是熟悉前端技术也会大大下降你定位元素的难度,熟练使用XPath 和
CSS 技术会使你的定位变得容易不少,若是精通javascript、jquery 等技术,那么使你的定位之路变得更加
为所欲为。
在咱们尝试开展自动化的web 项目中,大多数在设计初期并无考虑是否易于进行自动化,因此更多
的会以实现功能为目的,这个也是后期开展自动化困难重重的重要缘由。若是开发人员在设计代码的时候
就考虑是否容易自动化,为必要的元素加上id 和name 属性的话,那么咱们自动化工做会变得容易不少。
测试人员如何更顺利的实施自动化测试工做。一方面要努力学好技术,克服技术难题。另外一方面,我
们要清楚的认识到,自动化技术的应用与实践不是一我的的战斗。必定要获得整个团队的配合与支持。
固然,站在公司的立场,不能带来收益的事情是很可贵到支持的,这个就须要读者去综合评估目前的
产品真的是否适合引入自动化,或者目前的阶段是否真的迫切须要开展自动化。
假如,你已经动手开始进行自动化了,笔者再提几点建议。
一、熟练掌握xpath\CSS 定位的使用,这样在遇到各类难以定位的属性时才不会变得一筹莫展。
二、准备一份selenium-2.5.0-java-api,及时查阅WebDriver 所提供的方法。
三、学习掌握JavaScript 语言,掌握JavaScript 好处前面已经有过阐述,可让咱们的自动化测试工做
更加游刃有余。
四、自动化测试归根结底是与前端打交道,多多熟悉前端技术javascript