-
【转载】WatirGrid介绍
2010-04-16 09:28:11
分布式Ruby(drb也叫dRuby)是Ruby的远程方法调用库,它允许Ruby进程之间显式交互在相同或者不同机器上。Tuple space(元组空间)是并行/分布计算示例的一种共享存储实现,其Ruby实现是Rinda。Rinda::Ring允许drb服务和客户端自动相互发现而无需知道它们各自的位置,drb服务器用RingServer注册它们自己,这样就能允许客户端找到它们所需要的服务器了。RingServer持有被用作分布式服务的命名系统的TupleSpace。
文Going Parallel … distributed testing across a grid network using Watir就用上述技术实现了分布式自动化界面测试框架WatirGrid,它能够同时在多个操作系统上进行分布式网页测试,其中controller.rb实现了能同时被访问的tuple space仓库,providers.rb使远程Watir对象可用对Ring Server持有的tuple space。所用自动化基库自然是Watir。Youtube提供了视频演示,此外作者还推荐了一本有益相关开发的书《Distributed Programming with Ruby》。
-
【转载】ruby watir 整理
2010-02-12 09:29:09
异常对象识别(watir应用解决方案)
watir基于处理,继承于web document的对象提供较好的支持方法,但相对于处理windows对象较弱. 就目前从各网站收集的对象来看, 基本上,对于在ie实例对象打开的web标准对象
能够成功识别与操作,其它 的脱离当前ie窗口,打开的所有弹出框都不能正常识别。其中,弹出框对象占有异常对象识别中很大一部分。
目前碰到的弹出框, 我把他们分为三大类型:
1, alerts 警告作用,如:sorry, 当前用户没有权限操作
2, confirm 需要操作按钮, 如:你确认要删除当前记录?
3, prompt+ select +confirm 需要用户输入,操作查询或点击, 最后确认, 如:download/upload (浏览+选择文件)
下面给出,上面几种弹出框watir实现识别与操作的方法,
5.1. 弹出框基于autoit + 线程实现方式
此种方法,对于第一、二种弹出框操作较有效,
因点击某个link/button等对象,而弹出的窗口(大部分弹出框可应用此种方式来实现。)
1, 定义方法
def check_for_popups
autoit = win32ole.new('autoitx3.control')
#
# do forever - assumes popups could occur anywhere/anytime in your application.
loop do
# look for window with given title. give up after 1 second.
ret = autoit.winwait('消息 -- 网页对话框', '', 1)
#ret = winactivate("microsoft internet explorer", "")
#autoit.controlclick("microsoft internet explorer", "", "[class:button; instance:1]", 2)
puts(ret)
#
# if window found, send appropriate keystroke (e.g. {enter}, {y}, {n}).
if (ret==1) then autoit.send("{enter}") end
#
# take a rest to avoid chewing up cycles and give another thread a go.
# then resume the loop.
sleep(3)
end
end
2, 程序体代码
ie.button(:name, "signin").click_no_wait
sleep(20)
$popup = thread.new { check_for_popups } # start popup handler
at_exit { thread.kill($popup) }
5.2. call 另一ruby 文件
对于第二种弹出框,像安全警告点击, 并不通过操作与点击任何对象, 即呈现弹出窗口。
我尝试用3.1方法来实现,不成功。用下面方法替代:
1, 在watir/windowhelper.rb文件中增加方法
def push_security_alert_yes_cn
@autoit.winwait "安全警报", ""
@autoit.send "{tab}"
@autoit.send "{tab}"
@autoit.send "{space}"
end
2, 定义另一调用文件 tmp.rb
require 'watir/windowhelper'
helper = windowhelper.new
helper.push_security_alert_cn_yes
3, 在打开安全url之前,启动调用ruby文件
require 'rubygems'
require 'watir' # the watir controller
require 'win32ole'
require 'watir/windowhelper'
thread.new{system('ruby c:\tmp.rb')} #你定义tmp文件存放路径
ie = watir::ie.new
ie.goto("http://www.alipay.com.cn/ ")
5.3. 修改框架底层
此种方法,针对弹出框3.
举例一, 上传下载文件
1, 修改底层代码input_elements.rb文件,
类 filefield中, 方法set.
为了支持中文,有一句替换修改为:
system("rubyw -e \"require 'win32ole'; @autoit=win32ole.new('autoitx3.control');waitresult=@autoit.winwait ' 选择文件', '', 15; sleep 1; if waitresult == 1\" -e \"@autoit.controlsettext '选择文件', '', 'edit1', '#{setpath}'; @autoit.controlsend '选择文件', '', 'button2', '{enter}';\" -e \"end\"")
2, 定义方法
def save_file(filepath)
ai = win32ole.new("autoitx3.control")
ai.winwait("文件下载", "", 5)
ai.controlfocus("文件下载", "", "保存(&s)")
sleep 1
ai.controlclick("文件下载", "", "保存(&s)", "left")
ai.winwait("另存为", "", 5)
sleep 1
ai.controlsend("另存为", "", "edit1",filepath)
ai.controlclick("另存为", "", "保存(&s)", "left")
ai.winwait("下载完毕", "", 5)
ai.controlclick("下载完毕", "", "关闭")
end
3, 程序体代码:
ie.file_field(:name, "xlsfile").set("c:\\samenameobject.html")
#上传你所指定的文件
或
ie.span(:text, "导出excel表").click_no_wait
save_file("c:\\abc.xls")
#下载到你所指定的路径
针对弹出框3, 需要用户介入查询并操作:
举例二, 中供crm中类目与客户选择的弹出框,与第一种实现方式不同在于,
用到autoit中winactivate与controlclick方法,
require 'rubygems'
require 'watir' # the watir controller
require 'watir/windowhelper'
require 'win32ole'
def check_for_popups
autoit = win32ole.new('autoitx3.control')
loop do
ret = autoit.winwait("选择 -- 网页对话框", "", 1)
puts ret
if (ret==1) then
autoit.winactivate("[class:internet explorer_tridentdlgframe]", "")
autoit.send("{tab}")
autoit.send("{tab}")
#autoit.send("湖州")
#autoit.send("{asc 2709}")
#autoit.sendunicode("a")
#autoit.clipput ("杭")
#autoit.clipget
#autoit.tooltip "this is a tooltip杭州", 0, 0
#autoit.sleep 2000
autoit.send("{tab}")
autoit.send("{tab}")
autoit.send("{enter}")
autoit.winactivate("[class:internet explorer_tridentdlgframe]", "")
autoit.controlclick("选择 -- 网页对话框", "", "[class:internet explorer_tridentlstbox; instance:2]", 2)
autoit.send("{tab}")
autoit.send("{enter}")
autoit.send("{tab}")
autoit.send("{tab}")
autoit.send("{tab}")
autoit.send("{tab}")
autoit.send("{enter}")
end
sleep(3)
end
end
ie=watir::ie.new
ie.goto("http://10.2.6.4:5100/bin/member/signin ")
#ie.goto("http://10.2.6.4:5100/ ")
#ie.element_by_xpath("//span[contains(text(), 'main road nijmegen')]").click
ie.text_field(:name, "id").set("mhl1805")
ie.text_field(:name, "password").set("zxcvbnm")
ie.button(:name, "signin").click
ie.frame(:name, "left").link(:url, "http://10.2.6.4:5100/v3/help_cust.htm").click
ie.frame(:name, "left").link(:text, "新签中供客户").click
# start popup handler
ie.frame(:name, "right").frame(:name, "rtop").button(:value, "选择客户").click_no_wait
sleep(20)
$popup = thread.new { check_for_popups }
at_exit { thread.kill($popup) }
针对第三种popup window, 如果需要与用户交互,且需要输入中文时,若用autoit sendkey对待中文支持(但官方文档说支持中文输入, 网上有不少人和我遇到同样问题),尚没有找到有效方案,有待进一步跟进。
除上述弹出框需要特殊处理外,watir中也有一些扩展tag,或第三方控件需要特殊处理的,
像:
5.4. web html编辑器
中文站的html编辑器提供: 操作id或name操作起来较方便直接
require 'rubygems'
require 'watir' # the watir controller
require 'watir/windowhelper'
require 'win32ole'
ie=watir::ie.new
ie=watir::ie.attach(:title, /阿里助手/)
ie.text_field(:name, "_fmo.a._0.s").set("mhl1805")
ie.document.getelementbyid("_editor").contentwindow.focus()
ie.send_keys("abcsadfasfd")
但也碰到有些web页面,不提供任何id,只能用autoit方法来send tab实现
require 'rubygems'
require 'watir' # the watir controller
require 'watir/windowhelper'
require 'win32ole'
ie=watir::ie.new
#ie=watir::ie.attach(:title, /alibaba/)
ie.goto('http://us.my.alibaba.com/product/buyoffer/post_buying_lead.htm')
ie.text_field(:name, "_fmp.bu._0.su").set("mhl1805")
ie.text_field(:name, "_fmp.bu._0.su").set("中国人")
ie.checkbox(:id, "detaildesc").set
ie.checkbox(:id, "detaildesc").focus()
ie.send_keys("\t"*9)
ie.send_keys('hello worldabcdef')
5.5. 对象识别其它常用tag内置方法引用
如:ie.div , ie.span, ie.cell, ie.table方法,可以实现点击操作,取值操作等.
另外提供qtp 类似描述性编程,同类型对象统计:
ie.buttons.each { |b| puts b.to_s }
puts ie.checkboxes.length
puts ie.links.length
puts ie.buttons.length等等
对于常用的innertext属性, 在watir中已经封装到方法,可以直接引用。如:
ruby在对象识别底层,封装了innertext
实现,调用方法text即可:
如:puts ie.div(:id, "intelligentword").link(:id, index.to_s).text
最后:返回文本与源代码,用下面方法:
puts ie.text()
puts ie.html()
5.6. 识别对象正则表达式支持
当然,ruby提供强大的正则表达式支持,如:属性标识正则
ie=watir::ie.attach(:title, /alibaba/)
ruby的正则表达式以"//"作为基本框架,表达式内容位于"/"之间。表达式返回一个regexp的对象。
表达式的一般规则:
/a/匹配字符a。
/\?/匹配特殊字符?。特殊字符包括^, $, ? , ., /, \, [, ], {, }, (, ), +, *.
.匹配任意字符,例如/a./匹配ab和ac。
/[ab]c/匹配ac和bc,[]之间代表范围。例如:/[a-z]/ , /[a-za-z0-9]/。
/[^a-za-z0-9]/匹配不在该范围内的字符串。
/[\d]/代表任意数字,/[\w]/代表任意字母,数字或者_,/[\s]/代表空白字符,包括空格,tab和换行。
/[\d]/,/[\w]/,/[\s]/均为上述的否定情况。
关于正则其它用法,请参照《watir技术集锦》
5.7. 最后攻略
总之,对于对象识别与操作,要借助于上述文档中的, 灵活运用autoit, xpath与异常对象操作方法。对于watir不支持的windows控件,想到第一个方法,就是采用第三方autoit技术,来模拟键盘或鼠标操作。
对于操作web对象,watir不支持特殊tag,除了扩展其底层代码外,只能深深研究一下xpath了.
最后,再搞不定,就只能到watir group里咨询高人了,呵呵。
尚没有碰到其它更好方法。。。
一些错误
如果报错 autoitx3, it helps to make automation happen
那就在windows 下运行
regsvr32 "c:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\autoitx3.dll"
unknown ole server: `autoitx3.control' (wi2oleruntimeerror)
that might mean you have not resisted the autoitx3.dll in your computer,
in current watir version, autoitx3.dll has been included in the watir folder,
so run the command in "run":
regsvr32 "c:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\autoitx3.dll"
then you will not get the errors
learn autoitx3, please go to http://www.autoitscript.com/autoit3/index.shtml
i just want to use it to handle the popup windows when writing watir scripts -
【转载】watir学习系列
2010-02-11 09:50:18
加载win32ole文件: require ‘win32ole’
创建应用对象: excel = WIN32OLE.new("Excel.Application")
新建Excel文件: excel.workbooks.Add #默认Excel文件
excel.workbooks.Add 1 #单工作表
创建Excel文件对象: wb = excel.ActiveWorkBook
创建工作表对象: sheet = web.ActiveSheet
打开Excel文件: excel.workbook.open "文件路径名.xls"
取单元格值: str = sheet.Cell[1][2].Value
单元格赋值: sheet.Cells[3][6].value = "test"
保存Excel文件: wb.Save 或 wb.SaveAs "文件名"
退出Excel: excel.quitclass CreateFile #定义类,类名首字母需大写
def rows_to_file(rows) #定义类方法
@@data_rows = rows #定义类变量,无需申明变量类型
@@content = ''@@filename = "c:\\filename.txt" #定义文件路径
@@data_rows.each do |x| #遍历数组
@@content = @@content + x.to_s + ‘-‘ #to_s:转换为字符串
end
#写文件,参数说明:"a+" 在原有内容后追加数据 "w" :先将文件清空,再写入
File.open( @@filename, "a+" ) do |file|
file.puts @@content
end
end
endrows = ['a','b','c']
CreateFile = CreateFile.new
CreateFile.rows_to_file(rows)require 'watir'
#定义调用JS的类方法
class Watir::IE
def run_script(js)
ie.Document.parentWindow.execScript(js)
end
endie = Watir::IE.new
ie.goto("http://www.google.cn")js_string = "alert(\"测试调用Javascript!\");"
#调用类方法
ie.run_script(js_string)一、插入数据:
require 'DBI'
require 'jcode'
$KCODE = 's' #设置汉字代码为EUC,windows环境为"s",linux环境为"e"#数据库变量
db_host = 'DBI:OCI8:TEST'
db_user = 'user
db_psw = 'passwporddbh = DBI.connect(db_host, db_user, db_psw) #连接数据库
#插入数据
insert_sql = "insert into table values('1','2')"
begin
rs = dbh.prepare(insert_sql)
rs.execute #执行SQL
dbh.commit #提交数据
rs.finish
rescue DBI::DatabaseError => e
puts "Error code : #{e.err}"
puts "Error message: #{e.errstr}"
ensure
dbh.disconnect if dbh
end二、查询数据:
require 'DBI' #加载DBI文件
require 'jcode'
$KCODE = 's' #设置汉字代码为EUC,windows环境为"s",linux环境为"e"#数据库变量
db_host = 'DBI:OCI8:TEST'
db_user = 'user'
db_psw = 'password'
select_sql = "select value1,value2 from table"
begin
rs = dbh.prepare(select_sql)
rs.execute #执行查询
value_rows = rs.fetch_all #获取表数据
column_names_rows = rs.column_names #获取表列名
DBI::Utils::TableFormatter.ascii(column_names_rows,value_rows) #以表格的格式输出
DBI::Utils::XMLFormatter.table(value_rows) #以XML的格式输出
rs.finish
rescue DBI::DatabaseError => e
puts "Error code : #{e.err}"
puts "Error message: #{e.errstr}"
ensure
dbh.disconnect if dbh
end三、删除数据:
require 'DBI'
require 'jcode'
$KCODE = 'e' #设置汉字代码为EUC,windows环境为"s",linux环境为"e"#数据库变量
db_host = 'DBI:OCI8:TEST'
db_user = 'user'
db_psw = 'password'dbh = DBI.connect(db_host, db_user, db_psw) #连接数据库
#删除数据
delete_sql = "delete from table where value1 =? and value2=?"
begin
rs = dbh.prepare(delete_sql)
rs.execute('1','2')
dbh.commit
rs.finish
rescue DBI::DatabaseError => e
puts "Error code : #{e.err}"
puts "Error message: #{e.errstr}"
ensure
dbh.disconnect if dbh
end文本框:
<INPUT id="email" name="_fmu.u._0.e" value="" />
方法1: ie.text_field(:id,'email').set("文本内容")
方法2: ie.text_field(:name, 'email').set("文本内容")
方法3: ie.text_field(:name,"email").clear下拉框:
<SELECT name="cert_no">
<OPTION value="身份证">身份证</OPTION>
</SELECT>
方法1: ie.select_list(:name,"cert_no").select("身份证")
方法2: ie.select_list(:name,"cert_no").clearSelection超链接:
<a href = "http://www.google.cn/">google</a>
方法1:ie.link(:text,"google").click
方法2:ie.link(:url,"http://www.google.cn/").click复选框:
<input type = "checkbox" name = "checkme" value = "1">
方法1: ie.checkbox(:name,"checkme").set
方法2: ie.checkbox(:name,"checkme").clear
方法3: values = ie.checkbox(:name,"checkme").value
<input type = "checkbox" name = "checkme" value = "2">
#多个同名的复选框处理
方法1: ie.checkbox(:name,"checkme","2").set
方法2: ie.checkbox(:name,"checkme","2").clear单选框:
<input type = "radio" name = "clickme" id = "1">
方法1: ie.radio(:name, "clickme").set
方法2: ie.radio(:name, "clickme").clear一般按钮:
<input type = "button" name = "clickme" value = "Click Me">
方法1: ie.button(:value, "Click Me").click
方法2: ie.button(:name,"clickme").clicksubmit按钮:
<form. action = "submit" name = "submitform" method = "post">
<input type = "submit" value = "Submit"></input>
</form>
方法: ie.button(:value."Submit").click图片按钮:
<form. action ="submit" name = "doitform" method = "post">
<input type = "image" src = "images/doit.gif" name = "doit">
</form>
方法:ie.button(:name, "doit").clickForm中无按钮:
<form. action = "login" name = "loginform" method = "get">
<input name = "username" type = "text"></input>
</form>
方法1:ie.form(:name,"loginform").submit
方法2:ie.form(:action,"login").submit获取隐含对象值:
<INPUT type=hidden value="您的Email" name="field1">
方法:values = ie.hidden(:name,'field1').value
获取窗口对象:
方法1: ie2 = Watir::IE.attach(:url,'http://www.google.cn/') #根据URL获取
方法2: ie3 = Watir::IE.attach(:title,'Google') #根据窗口标题获取
方法3: ie4 = Watir::IE.attach(:title, /google.cn/) #正则表达式匹配获取
URL编码:
require 'cgi'
string = "URL编码"
string = CGI::escape(string)
puts string # 转换结果: URL%B1%E0%C2%EB
URL解码:
require 'cgi'
string = "URL%BD%E2%C2%EB"
string = CGI::unescape(string)
puts string # 转换结果:URL解码一、gem介绍:
gem是ruby管理包的工具,是ruby安装后自带工具,在安装包时会经常用到该工具二、gem相关命令:
显示gem的帮助:gem –h
显示gem版本号:gem –v
更新gem版本:gem update --system
安装watir包:gem install watir
运行build子命令构建gem包:gem build package.gemspec
列出安装的gems:gem list
检查已安装的gem包:gem check
卸载已安装的gem包:gem uninstall GEMNAME一、JDK安装及配置:
(1)默认安装JDK,路径如:C:"jdk1.5.0_11JDK下载地址http://java.sun.com/javase/downloads/index.jsp
(2)配置环境变量:
打开"我的电脑"右键属性--"高级"--"环境变量"页面,在系统变量里,添加变量JAVA_HOME,变量值:C:"jdk1.5.0_11
在系统变量里,添加变量CLASSPATH,变量值:.;%JAVA_HOME%"lib
在系统变量里,在变量Path变量值前增加:%JAVA_HOME%"bin;
二、Eclipse下载安装:
下载地址: http://www.eclipse.org/downloads/安装方法:将下载的Eclipse解压到c:"eclipse
三、RDT安装配置 :
下载地址:http://sourceforge.net/project/showfiles.php?group_id=50233
安装方法:将RDT解压到eclipse目录:c:"eclipse
安装说明: http://rubyeclipse.sourceforge.net/download.rdt.html
相关配置方法: http://os.51cto.com/art/200605/26177.htm
一、安装ruby:
ruby下载地址:http://www.ruby-lang.org/zh_CN/downloads/下载Windows一步安装版,默认安装,安装成功后可以运行命令查看版本:ruby –v
二、安装watir:
1.运行命令先更新gem:gem update --system2.运行命令安装watir: gem install watir
三、安装 oci
ruby ruby-oci8-0.1.16-mswin32.rb
下载地址: http://rubyforge.org/frs/download.php/41043/ruby-oci8-1.0.3-mswin32.rb四、安装DBI
下载地址: http://rubyforge.org/frs/download.php/33960/dbi-0.2.0.zip安装步骤:1.将下载的DBI解压到C:"dbi
2.分别在命令行中运行下面命令安装:
cd c:"dbi
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
五、安装IE Developer Toolbar(IE插件,可选)
下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en六、WatirRecorder++(watir脚本录制工具)
下载:http://www.hanselman.com/blog/content/binary/WatirRecorder_Setup_lite.msi -
【转载】watir5分钟教程
2010-02-10 16:47:30
1. 启动irb。
开始-运行-cmd,打开命令窗口,输入irb,可以看到如下提示:
C:\Documents and Settings\Administrator>irb
irb(main):001:0>2. 让ruby知道你想调用Watir。
命令窗口中输入:require “watir”,回车
可以看到如下提示:
irb(main):001:0> require “watir”
=> true3. 启动IE浏览器。
命令窗口中输入:ie = Watir::IE.new
可以看到打开了一个新的IE浏览器
并且命令窗口中出现如下提示:
irb(main):002:0> ie = Watir::IE.new
=> #<Watir::IE:0×2d0c6b8 @url_list=["about:blank"], @typingspeed=0.08, @page_container=#<Watir::IE:0×2d0c6b8 …>, @error_checkers=[], @down_load_time=0.359
, @rexmlDomobject=nil, @ole_object=nil, @ie=#<WIN32OLE:0×2d0c640>, @logger=#<Watir::DefaultLogger:0×2d0c5f8 @datetime_format=”%d-%b-%Y %H:%M:%S”, @progname=
nil, @logdev=#<Logger::LogDevice:0×2d0c550 @shift_age=nil, @filename=nil, @dev=#<IO:0×284e7d0>, @shift_size=nil>, @level=2>, @speed=:slow, @activeObjectHigh
LightColor=”yellow”, @defaultSleepTime=0.1>4. 打开Google首页。
输入:ie.goto “http://www.google.com/”
你将看到:
irb(main):003:0> ie.goto “http://www.google.com/”
=> 1.0625. 检查打开的IE中的URL是否为http://www.google.com/
命令窗口中输入:ie.url == “http://www.google.com/”
你将看到:
irb(main):004:0> ie.url == “http://www.google.com/”
=> true6. 点击包含“Images”字样的链接(在页面的左上角)
命令窗口中输入:ie.link(:text, “Images”).flash
你将看到:页面上的Images字样的背景有几秒钟时间是黄色的,并且命令窗口中显示
irb(main):012:0> ie.link(:text, “Images”).flash
=> nil7. 现在已经找到了页面上的Images链接,可以点击打开了
命令窗口中输入:ie.link(:text, “Images”).click
Images页面被打开
命令窗口中显示如下:
irb(main):005:0> ie.link(:text, “Images”).click
=> 0.6578. 检查页面上是否有”The most comprehensive image search on the web的字样。
命令窗口中输入:ie.text.include? “The most comprehensive image search on the web”
你将看到:
irb(main):006:0> ie.text.include? “The most comprehensive image search on the web”
=> true9. 在页面上的搜索框中输入Watir。(此处可以采用IEdeveloperToolbar来辅助查看搜索框的属性)。
命令窗口中输入:ie.text_field(:name, “q”).set “Watir”
可以看到页面的搜索框中被输入了Watir
你将看到:
irb(main):007:0> ie.text_field(:name, “q”).set “Watir”
=> true10. 点击Search Images按钮。
命令窗口中输入:ie.button(:value, “Search Images”).click
打开搜索结果页面
命令窗口中输出如下:
irb(main):008:0> ie.button(:value, “Search Images”).click
=> 15.45411. 检查search text field中是否有 Watir 的字样。
命令窗口中输入:ie.text_field(:name, “q”).value == “Watir”
命令窗口中输出如下:
irb(main):009:0> ie.text_field(:name, “q”).value == “Watir”
=> true12. 在图片大小的下拉框中选择Large images
命令窗口中输入:ie.select_list(:name, “imagesize”).select “Large images”
命令窗口中输出如下:
irb(main):010:0> ie.select_list(:name, “imagesize”).select “Large images”
=> “”13. 检查是否有来自Flickr的图片。
命令窗口中输入:ie.image(:src, /flickr/).exists?
命令窗口中输出如下:
irb(main):011:0> ie.image(:src, /flickr/).exists?
=> true现在你已经了解了Watir的基本用法。如果想要详细了解Watir的使用,请阅读Watir的详细教程
-
【转载】ruby和watir学习常用网站整理
2010-01-18 14:07:50
http://swik.net/Watir+Programming
http://www.pragprog.com/ #很多好的源码哦
http://docs.rubygems.org/ #rubygems
http://www.fxruby.org/ #fxruby
http://groups.google.com/group/watir-general/topics #google watir讨论组
http://ruby.nanshapo.com/weeks/2007-29.html
http://www.gotapi.com/rubyrails #API比较全
http://www.ruby-forum.com/forum/4 #ruby的论坛
http://navigation-china.com/ExcelVBA/Main.htm #excel的API函数
http://members.shaw.ca/paul_rogers/watir_tests/ #练习场所
http://www.kuqin.com/rubycndocument/man/index.html #ruby参考手册
http://www.ruby-doc.org/core/ #ruby API
http://wtr.rubyforge.org/rdoc/ #watir的api
http://wiki.openqa.org/display/WTR/Project+Home #watir教程
http://www.w3school.com.cn/
http://www.rubyidea.com/bbs/
http://okruby.com/ #有很多教程
http://www.docin.com/app/searchnew/fpg?keyword=ruby #很多在线资料
http://www.boobooke.com/bbs #那里面新书比较多,那些老师真是神
多谢子木和天空提供 -
【转载】ruby+gem常用命令
2010-01-18 14:05:24
ruby -v #查看ruby 版本
ruby -e 'require"watir"; puts Watir::IE::VERSION' #查看watir版本
gem -v #gem版本
gem update #更新所有包
gem update --system #更新RubyGems软件
gem install rake #安装rake,从本地或远程服务器
gem install rake --remote #安装rake,从远程服务器
gem install watir -v(或者--version) 1.6.2#指定安装版本的
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n '[0-9]' --local #查找本地含有数字的包
gem search log --both #从本地和远程服务器上查找含有log字符串的包
gem search log --remoter #只从远程服务器上查找含有log字符串的包
gem search -r log #只从远程服务器上查找含有log字符串的包
gem help #提醒式的帮助
gem help install #列出install命令 帮助
gem help examples #列出gem命令使用一些例子
gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #清除所有包旧版本,保留最新版本
gem contents rake #显示rake包中所包含的文件
gem dependency rails -v 0.10.1 #列出与rails相互依赖的包
gem environment #查看gem的环境
标题搜索
我的存档
数据统计
- 访问量: 76773
- 日志数: 78
- 文件数: 1
- 建立时间: 2006-12-11
- 更新时间: 2010-04-19