webdriver
文章平均质量分 64
乙醇很忙
8年开发测试开发经验,精通java js php html css ruby python object-c,web开发,移动开发,web测试开发,移动测试开发。4年selenium开发经验,给selenium贡献过代码。写了一本书https://github.com/easonhan007/webdriver_guide。webdriver,评价还不错。搭建和维护了watir-webdriver的官方中文站点17test.info。写了一个论坛itest.info。开源了一个测试框架lazym
展开
-
如何使watir-webdriver支持选择中文的下拉菜单
今天将waitr代码移植至watir-webdriver时,发现watir-webdriver的Select.select(text)方法似乎不支持中文的text。 也就是说watir-webdriver的select方法无法选择中文的option。 研究了一下源码发现Selec原创 2011-07-12 19:22:58 · 1746 阅读 · 1 评论 -
Selenium-webdriver系列教程(15)————使用已存在的profile启动firefox
关于firefox的profile,这里不想叙述太多,只说一点,那就是通过profile我们可以去修改测试运行时firefox的具体配置,对于firefox的自动化测试来说是必须掌握的一个知识点。使用selenium-webdirver操作profile的代码如下:# 使用已存在profile进行测试# 由于profile里保存有cookie等信息# 因此可以通过该技术来保持用户的登录原创 2011-10-29 09:49:01 · 1713 阅读 · 0 评论 -
Selenium-webdriver系列教程(14)————如何在启动firefox时加载扩展
有时候我们需要在使用firefox测试时启动firebug,这时候就可以用到下面的代码require 'rubygems'require 'selenium-webdriver' profile = Selenium::WebDriver::Firefox::Profile.newprofile.add_extension 'where/the/extensions/locate/fi原创 2011-10-28 19:17:04 · 1312 阅读 · 0 评论 -
Selenium-webdriver系列教程(16)————为firefox设置代理
下面的代码可以帮助你实现firefox测试运行时代理配置的功能。大概的思路是通过设置profile对象来进行配置。profile = Selenium::WebDriver::Firefox::Profile.new# 新建了url为proxy.org,端口为8080的htpp代理proxy = Selenium::WebDriver::Proxy.new(:http => "proxy.原创 2011-10-30 13:02:13 · 1385 阅读 · 0 评论 -
Webdriver启动firefox到底有多慢?
在使用watir-webdriver进行测试的时候我们会发现启动1个Firebox浏览器需要很长的一段时间。那么这个时间到底有多长呢?下面的代码可以测试一下。# encoding: utf-8 t_start_require = Time.newrequire 'rubygems'require 'watir-webdriver't_end_require = Time.new原创 2011-11-05 18:30:47 · 1578 阅读 · 0 评论 -
作死的自动化测试
尽管现在已经不再做自动化测试了,但是对自动化测试还是保持一直保持关注的。就像是尽管跟女神相隔两地,无缘一睹真容,但还是悄悄关注她的微博,默默的在朋友圈中刷出关于她的点点滴滴。从业很多年了,做过很多项目,有成功有失败,但是自动化测试项目的失败率无疑是最高的。久而久之,便渐渐能够总结出一种自动化测试作死的节奏。节奏一:大神,帮帮忙啊,救命啊,老是搞不定啊这句话我经常看到,一般来原创 2013-09-05 10:20:15 · 2650 阅读 · 1 评论 -
爱在watir(2)————不加班吃宵夜吧
coco感觉今天一定要加班到很晚了。测试组这边要测一个分页功能,需要手工去创建100条数据。本来这应该是开发用sql导数据的才对,但是开发说为了保证测试的真实性,他们希望每个测试那边能手动去创建这些数据。手动建立1000条数据意味着要填写100次表单,工作量是相当可观的。这时coco想到了tom,上次tom教她watir-webdriver以后,coco自己学了点ruby,发现原来写代码没有自己想原创 2013-09-29 14:21:20 · 989 阅读 · 0 评论 -
乙醇的webdriver实用指南ruby版本
webdriver实用指南是乙醇2013年分享计划的一部分,作为对已逝去的selenium2时代的追忆。 目录如下启动浏览器关闭浏览器浏览器最大化设置浏览器大小访问链接打印当前页面的title及url前进和后退简单的对象定位定位一组对象层级定位操作测试对象send keys模拟按键输入处理button group处理button dropdown处理navs处理面包屑处理对原创 2013-11-21 09:59:36 · 1899 阅读 · 0 评论 -
乙醇的webdriver实用指南java版本
启动浏览器关闭浏览器浏览器最大化设置浏览器大小访问链接打印当前页面的title及url前进和后退简单的对象定位定位一组对象层级定位操作测试对象send keys模拟按键输入处理button group处理button dropdown处理navs处理面包屑处理对话框新式的模态窗口获取测试对象的属性及内容获取测试对象的css属性获取测试对象的状态处理表单元素执行js处理alert/confirm/p原创 2013-11-22 08:55:23 · 2428 阅读 · 0 评论 -
爱在watir(4)————弹出窗口
coco这几天有点不开心,这点tom是可以看出来的。tom挖空心思想去接近coco,但coco一副拒人于千里之外的模样,tom感觉现在他跟coco都是磁铁,而且磁极相同。好几天的沉默最终还是被coco打破了,她遇到了一个问题,让她百思不得其解的问题,万般无奈的情况下,她选择请教tom,因为她觉得也许tom可以帮到她,尽管她心里并不是很情愿这么做。tom红着脸走到原创 2013-12-23 13:52:27 · 1109 阅读 · 0 评论 -
爱在watir(5)————关于alert的那些事情
coco病了,办公室很多人都病了,尽管秋天是伤感的季节,但不应该是流感的季节。不过很奇怪,今年的流感总是不期而至,徘徊数周,然后依依不舍的离去。好像程序员们的身体是病毒的理想宿主,因为他们总是在加班,疏于锻炼。coco平时也不太运动,对她来说运动量最大的事情莫过于逛街,这两年电商越发红火,coco连逛街都越来越少。由于缺乏锻炼,流感一到,coco第一个缴枪投降。tom想下班原创 2013-12-23 13:57:23 · 1204 阅读 · 0 评论 -
爱在watir(6)——关于frame的那些事情
fred对于tom暴力抗拒加班的行为非常生气。他化愤怒为食欲,早餐多吃了2个肉包。但是对于tom他却也无话可说。tom那天确实是提前完成了工作,而且做的很好,fred也挑不出什么毛病来。fred只是在第二天很客气的对tom说:"小伙子动作很麻利,手脚很快。不过你也要多注意点teamwork,有了teamwork才能带领团队更好的工作"。fred很郁闷,他现在已经在盘算着如何原创 2013-12-24 13:56:18 · 1325 阅读 · 2 评论 -
爱在watir(7)————关于等待
coco又遇到了一些问题,在她的印象里,好像在写watir的时候一直不停的遇到问题,不过在解决问题的过程中她觉得自己受益良多。其实做开发也是如此,基本上一直都是在了解自己不清楚的一些东西,不停的掉到坑里,然后慢慢爬出来,每次爬出都是成长。这次的问题是这样的:有时候页面上会有一些交互是非常动态的,比如点击一个按钮,然后出现一个弹出框。由于代码执行的很快,经常在弹出框还没有出现的时候代码就原创 2014-01-23 21:04:12 · 1121 阅读 · 0 评论 -
Selenium-webdriver系列教程(13)————如何处理table
Table对象是自动化测试中经常需要处理的对象。由于webdriver中没有专门的table类,所以我们需要简单的封装出一个易用易扩展的Table类来帮助简化代码。module EasyWrap class EasyWrapError < StandardError;end class NotValidElementError < EasyWrapError;end原创 2011-10-22 20:44:53 · 2088 阅读 · 0 评论 -
为什么watir-webdriver的firefox driver中Link.disabled?总是会返回false
昨天在调试代码时发现,watir-webdriver中的Link.disabled?总是毫无根据的返回false,哪怕这个link对象看上去确实是disabled了————颜色变灰,无法点击。后来上网爬文后才发现原来firefox中除表单元素外其他元素的disabled属性是无效的。这句拗口的话是什么意思?且看下面的例子。This is a link这个link在ie中显示原创 2011-10-27 19:15:25 · 1106 阅读 · 0 评论 -
Selenium-webdriver系列教程(12)————fire event的替代方案
webdriver里面已经没有了fire_event方法,就像世界上再也没有萨达姆,本拉登和卡扎菲一样。不过我们可以通过其他方法来实现fire_event的相似功能。考虑下面的html,当鼠标悬停到Mouse Over Here链接上时,js的mouseover事件被触发,shwo_tips()函数将被执行,隐藏的tips div会显示在页面上。 FireEv原创 2011-10-22 20:35:43 · 1723 阅读 · 0 评论 -
如何安装webdriver chrome浏览器支持
在gem 安装完watir-webdriver后,默认情况下chrome浏览器的支持是没有安装上的。所以如果要使用webdriver测试chrome的话,我们需要手动安装chrome支持。 RequirementsThe ChromeDriver controls the bro原创 2011-07-12 14:24:30 · 3528 阅读 · 1 评论 -
Selenium-Webdriver系列教程(1)————快速开始
Selenium-Webdriver系列教程(一)————快速开始Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的选择,究其原因不过是1.x时代遗留下了大量的文档,代码,教程让人们误以为1.x还是这个年代的主流,还应该光鲜原创 2011-10-21 22:28:35 · 8897 阅读 · 2 评论 -
Selenium-webdriver系列教程(3)————如何执行一段js脚本
有时候在进行自动化测试时需要在页面上执行一段js脚本,这个时候就需要用到execute_script方法了。require 'rubygems'require 'selenium-webdriver'dr = Selenium::WebDriver.for :ieurl = 'http://www.soso.com'dr.navigate.to urlsleep 3js = <<J原创 2011-10-22 18:55:51 · 4325 阅读 · 2 评论 -
Selenium-webdriver系列教程(5)————如何定位frame中的元素
在web ui自动化测试中,frame一直是令人头痛的问题,就像上班必须挤公车坐地铁一般,frame的问题总是令人气闷纠结为之黯然神伤。以前在使用watir 1.6x的时候,frame也是颇为棘手的一个问题。不但要照本宣科的进行一系列的设置,而且在进行实际代码编写的过程中会遇到各种奇奇怪怪的问题。frame就像中国男足的后防线,问题多多难以解决。selenium webdriver处理fr原创 2011-10-22 19:00:39 · 3788 阅读 · 0 评论 -
Selenium-webdriver系列教程(6)————如何捕获弹出窗口
在web自动化测试中点击一个链接然后弹出新窗口是比较司空见惯的事情。webdriver中处理弹出窗口跟处理frame差不多,以下面的html代码为例window.html Popup Window click me 下面的代码演示了如何去捕获弹出窗口require 'rubygems'require 'pp're原创 2011-10-22 19:03:33 · 3068 阅读 · 0 评论 -
Selenium-Webdriver系列教程(2)————浏览器的简单操作
上一讲我们介绍了如何部署selenium 2.0的开发环境,这一讲我们将介绍如何使用selenium提供给我们的接口进行浏览器的简单操作。本文将先介绍适合初级用户的一些常用方法,然后将对一些高级用法和实现源码进行稍微深入一些的分析。如何打开一个测试浏览器做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可"命令"浏览器去打开新页面,点击特定的链接,判断具体的逻辑等等原创 2011-10-21 22:38:58 · 5942 阅读 · 0 评论 -
Selenium-webdriver系列教程(4)————如何定位测试元素
测试对象定位一般都是各种web自动化测试框架或工具的核心内容。selenium-Webdriver的对象定位方法非常的丰富和强大。一般来说强大的对象定位都会提供如下的一些方法。单个对象的定位方法多个对象的定位方法层级定位selenium-Webdriver很好的支持了上述的3种定位方式。定位单个对象在定位单个对象时,selenium-Webdrive原创 2011-10-22 18:58:19 · 3898 阅读 · 1 评论 -
Selenium-webdriver系列教程(7)————如何处理alert和confirm
以前使用watir 1.6x 的时候处理页面javascript弹出的alert和confrim窗口时必须借助autoit工具来辅助执行,就像中国男足职业联赛中高价聘请外援一般。在selenium webdriver中,confirm和alert的处理再也不需要借助任何第三方工具了。下面的html页面上有1个名为click的button,点击该button后就会弹出1个alert窗口。原创 2011-10-22 20:11:58 · 2511 阅读 · 0 评论 -
Selenium-webdriver系列教程(8)————使用Page Object设计模式
在进行web前端自动化测试的过程中,Page Object设计模式可以称得上是杀人放火,居家旅行的常备武器。Page Object将测试对象及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。举例来说,在没有使用Page Object模式的情况下,脚本可能是这样写的:require 'rubygems'require 'selenium-webdriver' url原创 2011-10-22 20:19:26 · 2795 阅读 · 0 评论 -
Selenium-webdriver系列教程(9)————如何操作select下拉框
在selenium-webdriver中定位select list的方法比较简单,用id和name等属性可以很方便的将select给找出来,但是怎么去选择下拉框中的某一项呢?思路是这样的,首先定位到select list元素,然后找出该select list下所有的option,点击该option element既可,以下面的html代码为例 Select原创 2011-10-22 20:24:33 · 3038 阅读 · 0 评论 -
Selenium-webdriver系列教程(10)————如何智能的等待页面加载完成
web的自动化测试中,我们经常会遇到这样一种情况:点击1个按钮,页面上会弹出1个iframe,这时候脚本就需要去等待iframe加载完毕才能进行后续的操作。在这种情况下,我们一般的处理思路是等待被等待对象上的某个子元素出现,当这个子元素出现时我们就认为该对象已经加载完毕,代码可以继续往下执行了。selenium-webdriver为我们提供了一个Wait类来完成类似的等待功能。下面的h原创 2011-10-22 20:27:42 · 2943 阅读 · 0 评论 -
Selenium-webdriver系列教程(11)————使用jquery辅助进行测试
Jquery是当下比较流行的1个js框架,通过使用webdriver的execute_script方法,我们可以将jquery库结合到自动化测试中去。结合jquery进行自动化测试的思想是这样的:首先将jquery的源码读到1个string中去,然后使用execute_script执行该string。执行完毕后我们就可以通过execute_script方法来调用jquery库了。下面的ht原创 2011-10-22 20:30:07 · 2503 阅读 · 0 评论 -
爱在watir(8)————细枝末节(完)
一个人的时候,tom喜欢把音乐声音放大最大,这样就没人可以打扰到他。在这段时间里,他是纯粹的,什么都不用想,一种断层的空灵。不过很可惜,工作以后tom越来越难得的完全放空一次。有人通过喝酒将自己放空,有人通过运动将自己放空,tom喜欢音乐,各种声音交杂在一起,他感到轻松,如释重负。tom最近心里总是藏着一些事情,像是负担着一块石头,总是无法落地。他清楚自己是记挂着coco,原创 2014-01-24 10:36:02 · 1555 阅读 · 1 评论