随笔分类 -  webdriver

摘要:当你的测试页面包含一些动态的交互,比如有许多AJAX时,等待页面加载完毕往往是一件很头痛的事情。显示的等待Watir-Webdriver提供了4种方法使你的等待体验不再痛苦(将那些丑陋的sleep语句从代码中移除掉吧):Watir::Wait.until { ... }: 等待,直到block中的语句为trueobject.when_present.set: 当object出现时去操作objcet,这个例子里是调用了object的set方法,当object存在的时候object.wait_until_present:等待,直到object出现object.wait_while_present: 阅读全文
posted @ 2013-06-02 08:28 乙醇 阅读(1371) 评论(0) 推荐(0) 编辑
摘要:在使用watir-webdriver进行测试的时候我们会发现启动1个Firebox浏览器需要很长的一段时间。那么这个时间到底有多长呢?下面的代码可以测试一下。# encoding: utf-8 t_start_require = Time.newrequire 'rubygems'require 'watir-webdriver't_end_require = Time.new require_time = t_end_require - t_start_requireputs 'require_time ' +require_time.to_s 阅读全文
posted @ 2011-11-05 18:30 乙醇 阅读(2451) 评论(1) 推荐(1) 编辑
摘要:下面的代码可以帮助你实现firefox测试运行时代理配置的功能。大概的思路是通过设置profile对象来进行配置。profile = Selenium::WebDriver::Firefox::Profile.new# 新建了url为proxy.org,端口为8080的htpp代理proxy = Selenium::WebDriver::Proxy.new(:http => "proxy.org:8080")profile.proxy = proxy driver = Selenium::WebDriver.for :firefox, :profile => p 阅读全文
posted @ 2011-10-30 13:08 乙醇 阅读(2469) 评论(1) 推荐(0) 编辑
摘要:如何安装webdriver chrome浏览器支持在gem 安装完watir-webdriver后,默认情况下chrome浏览器的支持是没有安装上的。 所以如果要使用webdriver测试chrome的话,我们需要手动安装chrome支持。Requirements The ChromeDriver controls the browser using Chrome's automation proxy framework. Consequently, the ChromeDriver is only compatible with Chrome version 12.0.712.0 o 阅读全文
posted @ 2011-10-29 10:15 乙醇 阅读(2733) 评论(0) 推荐(0) 编辑
摘要:关于firefox的profile,这里不想叙述太多,只说一点,那就是通过profile我们可以去修改测试运行时firefox的具体配置,对于firefox的自动化测试来说是必须掌握的一个知识点。使用selenium-webdirver操作profile的代码如下:# 使用已存在profile进行测试# 由于profile里保存有cookie等信息# 因此可以通过该技术来保持用户的登录态 driver = Selenium::WebDriver.for(:firefox, :profile => "my-existing-profile")也可以在代码中动态的更改已存 阅读全文
posted @ 2011-10-29 09:46 乙醇 阅读(3296) 评论(4) 推荐(1) 编辑
摘要:有时候我们需要在使用firefox测试时启动firebug,这时候就可以用到下面的代码require 'rubygems'require 'selenium-webdriver' profile = Selenium::WebDriver::Firefox::Profile.newprofile.add_extension 'where/the/extensions/locate/firebug.xpi'dr = Selenium::WebDriver.for :firefox, :profile => profile这段代码首先创建了1个 阅读全文
posted @ 2011-10-28 19:14 乙醇 阅读(2037) 评论(0) 推荐(0) 编辑
摘要:Table对象是自动化测试中经常需要处理的对象。由于webdriver中没有专门的table类,所以我们需要简单的封装出一个易用易扩展的Table类来帮助简化代码。module EasyWrap class EasyWrapError < StandardError;end class NotValidElementError < EasyWrapError;end class IncorrectdIndexError < EasyWrapError;end class TableBase attr_reader :e def i... 阅读全文
posted @ 2011-10-27 21:22 乙醇 阅读(3082) 评论(0) 推荐(1) 编辑
摘要:webdriver里面已经没有了fire_event方法,就像世界上再也没有萨达姆,本拉登和卡扎菲一样。不过我们可以通过其他方法来实现fire_event的相似功能。考虑下面的html,当鼠标悬停到Mouse Over Here链接上时,js的mouseover事件被触发,shwo_tips()函数将被执行,隐藏的tips div会显示在页面上。<html> <head> <title>FireEvent</title> <style> .mo {color: blue;} .tips {display:none;b... 阅读全文
posted @ 2011-10-23 17:32 乙醇 阅读(3246) 评论(0) 推荐(3) 编辑
摘要:Jquery是当下比较流行的1个js框架,通过使用webdriver的execute_script方法,我们可以将jquery库结合到自动化测试中去。结合jquery进行自动化测试的思想是这样的:首先将jquery的源码读到1个string中去,然后使用execute_script执行该string。执行完毕后我们就可以通过execute_script方法来调用jquery库了。下面的html代码中有一个隐藏的div,当鼠标移动到(mouseover)页面上名为Mouse Over Here的链接时,隐藏的div将会显示出来。<html> <head> <titl 阅读全文
posted @ 2011-10-23 13:23 乙醇 阅读(3250) 评论(0) 推荐(0) 编辑
摘要:web的自动化测试中,我们经常会遇到这样一种情况:点击1个按钮,页面上会弹出1个iframe,这时候脚本就需要去等待iframe加载完毕才能进行后续的操作。在这种情况下,我们一般的处理思路是等待被等待对象上的某个子元素出现,当这个子元素出现时我们就认为该对象已经加载完毕,代码可以继续往下执行了。selenium-webdriver为我们提供了一个Wait类来完成类似的等待功能。下面的html代码实现了这样的一种效果:点击click按钮5秒钟后,页面上会出现一个红色的div块。我们需要写一段自动化脚本去捕获这个出现的div,然后高亮之。set_timeout.html <html> 阅读全文
posted @ 2011-10-23 13:21 乙醇 阅读(5869) 评论(2) 推荐(0) 编辑
摘要:在selenium-webdriver中定位select list的方法比较简单,用id和name等属性可以很方便的将select给找出来,但是怎么去选择下拉框中的某一项呢?思路是这样的,首先定位到select list元素,然后找出该select list下所有的option,点击该option element既可,以下面的html代码为例<html> <head> <title>Select</title> </head> <body> <span>select demo</span> < 阅读全文
posted @ 2011-10-23 13:18 乙醇 阅读(7244) 评论(1) 推荐(3) 编辑
摘要:在进行web前端自动化测试的过程中,Page Object设计模式可以称得上是杀人放火,居家旅行的常备武器。Page Object将测试对象及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。举例来说,在没有使用Page Object模式的情况下,脚本可能是这样写的:require 'rubygems'require 'selenium-webdriver' url = 'www.soso.com'dr = Selenium::WebDriver.for :iedr.navigate.to url ua_links = dr.fi 阅读全文
posted @ 2011-10-22 23:04 乙醇 阅读(4096) 评论(1) 推荐(1) 编辑
摘要:以前使用watir 1.6x 的时候处理页面javascript弹出的alert和confrim窗口时必须借助autoit工具来辅助执行,就像中国男足职业联赛中高价聘请外援一般。在selenium webdriver中,confirm和alert的处理再也不需要借助任何第三方工具了。下面的html页面上有1个名为click的button,点击该button后就会弹出1个alert窗口。<html> <head> <title>Alert</title> </head> <body> <input id = " 阅读全文
posted @ 2011-10-22 23:02 乙醇 阅读(3283) 评论(4) 推荐(1) 编辑
摘要:在web自动化测试中点击一个链接然后弹出新窗口是比较司空见惯的事情。webdriver中处理弹出窗口跟处理frame差不多,以下面的html代码为例window.html<html> <head><title>Popup Window</title></head> <body> <a id = "soso" href = "http://www.soso.com/" target = "_blank">click me</a> </b 阅读全文
posted @ 2011-10-22 22:58 乙醇 阅读(4592) 评论(0) 推荐(0) 编辑
摘要:在web ui自动化测试中,frame一直是令人头痛的问题,就像上班必须挤公车坐地铁一般,frame的问题总是令人气闷纠结为之黯然神伤。以前在使用watir 1.6x的时候,frame也是颇为棘手的一个问题。不但要照本宣科的进行一系列的设置,而且在进行实际代码编写的过程中会遇到各种奇奇怪怪的问题。frame就像中国男足的后防线,问题多多难以解决。selenium webdriver处理frame比较简单,这点比某些测试工具要先进一些,令人身心愉悦。以下面的html代码为例,我们看一下如何定位frame上的元素。frame.html<html> <head> <ti 阅读全文
posted @ 2011-10-22 22:53 乙醇 阅读(4564) 评论(0) 推荐(2) 编辑
摘要:测试对象定位一般都是各种web自动化测试框架或工具的核心内容。selenium-Webdriver的对象定位方法非常的丰富和强大。一般来说强大的对象定位都会提供如下的一些方法。单个对象的定位方法多个对象的定位方法层级定位selenium-Webdriver很好的支持了上述的3种定位方式。定位单个对象在定位单个对象时,selenium-Webdriver支持使用如下的一些属性对元素进行定位。:class => 'class name',:class_name => 'class name',:css => 'css selecto... 阅读全文
posted @ 2011-10-22 22:49 乙醇 阅读(8722) 评论(1) 推荐(2) 编辑
摘要:有时候在进行自动化测试时需要在页面上执行一段js脚本,这个时候就需要用到execute_script方法了。require 'rubygems'require 'selenium-webdriver'dr = Selenium::WebDriver.for :ieurl = 'http://www.soso.com'dr.navigate.to urlsleep 3js = <<JS q = document.getElementById("tb"); q.style.border = "1px soli 阅读全文
posted @ 2011-10-22 21:38 乙醇 阅读(5051) 评论(3) 推荐(1) 编辑
摘要:上一讲我们介绍了如何部署selenium 2.0的开发环境,这一讲我们将介绍如何使用selenium提供给我们的接口进行浏览器的简单操作。本文将先介绍适合初级用户的一些常用方法,然后将对一些高级用法和实现源码进行稍微深入一些的分析。如何打开一个测试浏览器做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可"命令"浏览器去打开新页面,点击特定的链接,判断具体的逻辑等等。因此该操作为"万里长征的第一步",必须给以重视。具体代码如下。需要注意的是如果使用chrome进行测试,那么必须下载安装chrome driver。require  阅读全文
posted @ 2011-10-22 19:23 乙醇 阅读(5935) 评论(4) 推荐(2) 编辑
摘要:Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。 不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的选择,究其原因不过是1.x时代遗留下了大量的文档,代码,教程让人们误以为1.x还是这个年代的主流,还应该光鲜亮丽在前台演出属于它的美好。长江后浪推前浪,最为前浪的selenium 1.x的宿命应该是死在沙滩上。 阅读全文
posted @ 2011-10-22 19:17 乙醇 阅读(16510) 评论(7) 推荐(9) 编辑
摘要:昨天因为要装watir-webdriver的原因将用了快一年的ruby1.8.6升级到了1.9。由于1.9是原生支持unicode编码,所以我们可以使用中文进行自动化脚本的编写工作。做了简单的封装后,我们可以实现如下的自动化测试代码。请注意,这些代码是可以正确运行并作为正式的自动化测试用例的。1 测试浏览器 = Watir::Browser.new :firefox2 测试浏览器.转到 'www.google.com'3 在(测试浏览器.的.text_field(:name, "q")).中.输入 "qq"4 点击 测试浏览器.的.but 阅读全文
posted @ 2011-07-23 14:21 乙醇 阅读(3125) 评论(6) 推荐(3) 编辑

友情链接 虫师的blog  测试教程网  重定向科技  省略