??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码一区二区乱子伦,亚洲精品韩国美女在线,亚洲人成国产精品无码http://www.tkk7.com/lijun_li/archive/2023/01/20/450903.htmllijunlijunFri, 20 Jan 2023 11:00:00 GMThttp://www.tkk7.com/lijun_li/archive/2023/01/20/450903.htmlhttp://www.tkk7.com/lijun_li/comments/450903.htmlhttp://www.tkk7.com/lijun_li/archive/2023/01/20/450903.html#Feedback0http://www.tkk7.com/lijun_li/comments/commentRss/450903.htmlhttp://www.tkk7.com/lijun_li/services/trackbacks/450903.html~写背景Q?/span>

自从搞了(jin)bi数据很写代码?jin),q次到新公司要从头开始搭建测试团队,又要开启新的自动化试之旅Q?/span>python已经?/span>3.X版本?jin),也支持?jin)Robot framework的ride库,现把安装文整理如下Q便于后l新人安装,走弯\?/p>

参考资料:(x)

https://blog.csdn.net/thefg/article/details/128601410

https://blog.csdn.net/qq_45894553/article/details/119893181

特别说明Q?span lang="EN-US">

安装环境选择的版本:(x)Windows10+python3.7Q大?.7版本安装Robot framework的ride库不能正怋用?/span>

一、安装的软g清单见下图:(x)


二、安装步骤:(x)

安装包名

安装Ҏ(gu)

下蝲地址

备注

1

python

具体见:(x)https://blog.csdn.net/thefg/article/details/128601410

https://www.python.org/download

切记目前最高有效版本只能安?.7.9

2

setuptools

不需要安装,python3.7.9安装后自带安?/span>

?/span>

Python 的套件管理程?/span>

3

pip

不需要安装,python3.7.9安装后自带安?/span>

?/p>

Python 的套件管理程?/span>

4

升pip

Cmd命o(h)执行Qpip install --upgrade pip

?/span>

升pip到最新版?/span>

5

robot framework

Cmd命o(h)执行Qpip install robotframework

https://pypi.python.org/pypi/robotframework

robot framework本n

6

robotframework-ride

Cmd命o(h)执行Qpip install robotframework-ride

https://pypi.python.org/pypi/robotframework-ride

Ride

7

wxPython

不需要安装,安装robotframework-ride自动安装

?/span>

支撑Ride的运行库

8

wheel

Cmd 命o(h)执行Q?/span>pip install wheel

?/span>

q行安装.whl?/span>

9

robotframework-selenium2library

Cmd命o(h)执行Qpip install robotframework-selenium2library

https://pypi.python.org/pypi/robotframework-selenium2library

selenium2试库,Zwebdriver驱动

10

robotframework-databaselibrary

Cmd命o(h)执行Qpip install

robotframework-databaselibrary

https://github.com/franz-see/Robotframework-Database-Library

DB?/span>

11

Pymysql

Cmd命o(h)执行Qpip install pymysql

https://pypi.python.org/pypi/pymssql

MysqlW三方库

12

pywin32

不需要安装,安装robotframework-ride自动安装

?/span>

13

AutoItV3

exe文gQ直接双d?/span>

http://www.autoitscript.com/site/autoit-news/autoit-v3-3-10-0-released/

AutoItLibrary使用前提

14

Requests

Cmd命o(h)执行Qpip install requests

https://pypi.python.org/pypi/requests

RequestsLibrary库用前?/span>

15

RequestsLibrary

Cmd命o(h)执行Qpip install -U robotframework-requests

https://github.com/bulkan/robotframework-requests

http request?/span>

16

robotframework-autoitlibrary

Cmd命o(h)执行Qpip install robotframework-autoitlibrary

?/p>

 

17

autoitlibrary3

Cmd命o(h)执行Q?/span>pip install autoitlibrary3

http://code.google.com/p/robotframework-autoitlibrary/

AutoItLibrary试?/span>

18

robotframework-appiumlibrary

Cmd命o(h)执行Q?/span>pip install robotframework-appiumlibrary

?/p>

 

19

robotframework-httplibrary

Cmd命o(h)执行Q?/span>pip install robotframework-httplibrary

?/p>

安装完后?x)出?/span>ride加蝲httplibrary库标U失败,解决办法手动安装livetestQ具体见下面说明

 

三、安装后(g)查:(x)

1.   Cmd命o(h)下执行ride.pyQ能成功q入ride面说明robot framework安装成功?/span>

2.   配置ride为桌面快h式:(x)?/span>RIDE的操作界面,点击Tools下的 Create RIDE Desktop Shortcut 在桌面上创徏 RIDE 快捷方式卛_Q具体见下图

 

3.       在ride操作面新徏一个项目,把AutoItLibrary、Selenium2Librarycd载,加蝲中如果不昄U色说明AutoItLibrary、Selenium2Library安装成功?/span>

4.       Cmd命o(h)下执行pip listQ可以查看安装的包列表有哪些

 

四、特别说明:(x)

问题Qpython 解决 robotframework RIDE 中导入HttpLibrary库ؓ(f)U色

解决办法Q?/strong>

1.     (g)查相兛_是否以及(qing)安装


jsonpathQjsonpointer 可以直接pip install q行安装Qlivetest 需要离U安装,步骤如下Q?/p>

2.     下蝲livetest包,地址Qhttps://pypi.org/project/livetest/#files


3.     解压q修改相x(chng)?/strong>

修改 /livetest-0.5/livetest/init.py文g

修改import httplib ?import http.client as httplib

修改import urlparse ?import urllib.parse

修改from Cookie import BaseCookie, CookieError ?import http.cookiejar

修改所?except XXXError, e ?except XXXError as e



修改/livetest-0.5/test/test_select.py文g

修改文g中所有except XXXError, e ?except XXXError as e


 

修改 /livetest-0.5/setup.py文g

修改long_description=file(‘README.rst’).read() ?long_description=open(‘README.rst’).read()

修改version=livetest.version ?version=‘0.5’

修改author_email=livetest.author ?author_email=‘storborg@mit.edu’


4.     手动安装livetest

?/span>cmd中切换\径到\livetest-0.5Q执?/span> python setup.py installQ安装成功?/span>

5.     修改HttpLibrary相关配置

修改__init__.py (文g路径QC:\Python37\Lib\site-packages\HttpLibrary)

修改from urlparse import urlparse 为from urllib.parse import urlparse

修改except ValueErrorQ?e?except ValueError as e (׃?

6.     重启rideQ导入正?/strong>


 

五、验证工h否能正常使用

1.安装Firefox览?/p>

2.打开ride工具Q加载相关类库,输入如下代码q行Q运行成功说明安装成功可?/p>



 

 





lijun 2023-01-20 19:00 发表评论
]]>
记录在windows7下appium安装遇到q的坑!http://www.tkk7.com/lijun_li/archive/2017/03/03/432358.htmllijunlijunFri, 03 Mar 2017 10:11:00 GMThttp://www.tkk7.com/lijun_li/archive/2017/03/03/432358.htmlhttp://www.tkk7.com/lijun_li/comments/432358.htmlhttp://www.tkk7.com/lijun_li/archive/2017/03/03/432358.html#Feedback0http://www.tkk7.com/lijun_li/comments/commentRss/432358.htmlhttp://www.tkk7.com/lijun_li/services/trackbacks/432358.html 

~写背景Q?/span>

q记得自q一ơ安?/span>appiumӞ?/span>baidu?/span>google上找?jin)很多资料,按照找来的文档,没有一个文档是能完整的从头到尾一ơ安装成功的Q遇C(jin)不少坑,q些坑都是怎么解决的在q里ȝQؓ(f)方便以后自己回头看看?/span>

 

安装的环境是Q?/span>windows7

 

问题?sh)Q在U安?/span>appiumQ?/span>cmd执行命o(h)Q?/span>npm install –g appium出现如下错误信息Q?/span>

30658 error Windows_NT 6.1.7601

30659 error argv "D:\\Program Files\\nodejs\\node.exe" "D:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "appium-chromedriver"

30660 error node v7.1.0

30661 error npm v3.10.9

30662 error code ELIFECYCLE

30663 error appium-chromedriver@2.9.2 install: `node install-npm.js`

30663 error Exit status 1

30664 error Failed at the appium-chromedriver@2.9.2 install script 'node install-npm.js'.

30664 error Make sure you have the latest version of node.js and npm installed.

364 error If you do, this is most likely a problem with the appium-chromedriver package,

30664 error not with npm itself.

30664 error Tell the author that this fails on your system:

30664 error     node install-npm.js

30664 error You can get information on how to open an issue for this project with:

30664 error     npm bugs appium-chromedriver

30664 error Or if that isn't available, you can get their info via:

30664 error     npm owner ls appium-chromedriver

30664 error There is likely additional logging output above.

30665 verbose exit [ 1, true ]

 

解决办法Q?/span>

安装能访?/span>www.google.com|站?/span>VPN软gQ然后再重新安装appium的低版本Q执行命令:(x)npm install –g appium@1.5

 

问题?sh)?x)在线安装appiumQ?/span>cmd执行命o(h)Q?/span>npm install –g appium出现错误提示Q?/span>

MSBUILD : error MSB3428: 未能加蝲 Visual C++ lg“VCBuild.exe”。要解决此问题, 1) 安装 .NET Framework 2.0 SDKQ?) 安装 Microsoft Visual Studio 2005Q或 3) 如果该lg安装C(jin) 其他位置Q请其位置d到系l?路径中?/span>

 

解决办法Q?/span>

下蝲.NET Framework 4.5?/span>Microsoft Visual C++ 2015 Redistributable (x64)q行安装

 

问题?sh)?x)在线安装appiumQ?/span>cmd执行命o(h)Q?/span>npm install –g appiumQ当appium版本高(sh)1.6.1以上Q会(x)安装sqlite3Q这时会(x)出现错误提示Q?/span>

node-pre-gyp install --fallback-to-build

 

解决办法一Q执?/span>npm install –g grunt-node-inspector 安装后,l箋(hu)安装?/span>

解决办法二:(x)降版本安装Q执行安装命令:(x)npm install –g appium@1.5Q?/span>appium1.5版本的安装是不包?/span>sqlite3?/span>

 

问题四:(x)在线安装appiumQ?/span>cmd执行命o(h)Q?/span>npm install –g appium@1.5 Q当安装?/span>appium-selendroid-driverlg后会(x)报错?/span>

npm ERR! appium-selendroid-driver@1.3.4 install: node ./bin/install.js

npm ERR! Exit status 1

npm ERR!

npm ERR! Failed at the appium-selendroid-driver@1.3.4 install script 'node ./bin

/install.js'.

npm ERR! This is most likely a problem with the appium-selendroid-driver package

npm ERR! not with npm itself.

npm ERR! Tell the author that this fails on your system:

npm ERR! node ./bin/install.js

npm ERR! You can get their info via:

npm ERR! npm owner ls appium-selendroid-driver

npm ERR! There is likely additional logging output above.

 

解决办法Q通常是网l问题,需?/span>安装能访?/span>www.google.com|站?/span>VPN软gQ然后再重新安装?/span>

 

最后提醒:(x)安装appium一定要有耐心(j)、一定要有耐心(j)、一定要有耐心(j)Q因问国外网站在U安装是需要花旉的;要想安装软g又不影响工作Q就要申请一台机器单独弄?x)省时省力?/span>

 

上面的几个坑Q都是在折腾?/span>N?/span>appium的版本安装?/span>N?/span>node的版本安装后得出的经验?/span>



lijun 2017-03-03 18:11 发表评论
]]>
手机自动化工具Appium1.5安装说明之windows7http://www.tkk7.com/lijun_li/archive/2017/03/03/432357.htmllijunlijunFri, 03 Mar 2017 09:05:00 GMThttp://www.tkk7.com/lijun_li/archive/2017/03/03/432357.htmlhttp://www.tkk7.com/lijun_li/comments/432357.htmlhttp://www.tkk7.com/lijun_li/archive/2017/03/03/432357.html#Feedback0http://www.tkk7.com/lijun_li/comments/commentRss/432357.htmlhttp://www.tkk7.com/lijun_li/services/trackbacks/432357.html 

手机自动化工具Appium1.5安装说明之windows7

 

~写背景Q?/span>

部门内部开始?/span>robotframework自动化框架进行网站和手机自动化测试的试运行有3个月?jin),今天抽空把安装文整理整理,׃nl需要的同行和新手学?fn),让大家在安装的过E中碰到我遇到的坑?/span>

 

目标Q在windows7安装手机自动化工?/span>appium和手机模拟器q行手机软g自动化测?/span>

 

安装准备Q?/span>需要准备如下YӞ可以自己在网上下载:(x)

1.工具Q?/span>LoCo加速器Q注意:(x)一定要能访问国外网站,不然在线安装?x)失?/span>

2.java?/span>JDKQ版本:(x)jdk-6u45-windows-x64

3. Android SDKQ版本:(x)android-studio-bundle-143.2739321-windows

4.nodejsQ版本:(x)node-v6.8.1-x64

5.Microsoft Visual C++ 2015 Redistributable (x64)

6.Microsoft .NET Framework 4.5

7.手机模拟器:(x)夜神模拟?/span>

 

一?/span>安装软g

1.       LoCo加速器Q?/span>LoCo加速器下蝲后,直接点击exe可执行文件安装即可,安装后用邮箱注册Q注册后15元购?/span>1个月的服务;然后dQ登录后q行链接操作。链接成功后Q访问网站:(x)www.google.com能正显Cƈ搜烦(ch)出内容,说明成功?/span>

2.       JDK安装Q下?/span>java?/span>jdk后,点击exe可执行文件安装即可,安装后进行如下配|:(x)

1Q添加系l环境变量:(x)JAVA_HOMEQ|(x)Jdk的安装\径,如:(x)D:\Java\jdk1.6.0_45

2Q添加系l环境变量:(x)CLASSPATHQ|(x)

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3Q修改系l环境变?/span>path|加上Q?/span>%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(g)?/span>JAVA环境是否配置好,q入CMD命o(h)行,输入java?/span>javacQ可以看到好多的命o(h)提示Q说明成功?/span>

3.       Android SDK安装Q直接点?/span>Android Studio?/span>exe可执行文件安装即可,安装后进行如下配|:(x)

1Q?nbsp;新增pȝ环境变量 ANDROID_HOMEQgؓ(f) Android SDK 路径Q如Q?/span>D:\Android\sdk

2Q?nbsp;修改pȝ环境变量Path|加上Q?/span>

;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

4.       Nodejs安装Q直接点?/span>exe可执行文件安装即可,安装后在cmd命o(h)下输入:(x)node –vQ能看到版本信息说明安装OKQ配|?/span>npm安装文g路径Q?/span>cmd命o(h)下输入:(x)

npm config set prefix="D:\\Program Files\\nodejs\\node_global"

npm config set cache="D:\\Program Files\\nodejs\\node_cache"

npm config set init-module="D:\\Program Files\\.npm-init.js"

npm config set tmp="D:\\Program Files\\Temp"

npm config set userconfig="D:\\Program Files\\.npmrc"

配置后,通过如下命o(h)可以查看配置信息Q?/span>

npm config list

npm config ls -l

5.       Microsoftlg安装Q直接点?/span>Visual C++ 2015 Redistributable (x64)?/span>.NET Framework 4.5?/span>exe安装文gQ直接安装即可?/span>

6.       Appium安装Q?/span>cmd命o(h)下输入如下命令:(x)

1Q?nbsp;npm  install  –g  appium-doctor

保国外|站google能正常访问情况下Q在U安?/span>appium-doctor软g包,安装成功后,?/span>cmd命o(h)下输入:(x)appium-doctorQ查?/span>appium安装配置环境是否okQ都OK说明配置正常

2Q?nbsp;appium-doctor安装正常后,输入命o(h)Q?/span>npm install -g appium@1.5

下蝲的文件内Ҏ(gu)较多Q一定要保|络正常Q安装时间会(x)比较长,一定要耐心(j){待?/span>

3Q?nbsp;Appium安装成功后,cmd命o(h)H口输入Q?/span>appium在界面会(x)昄版本信息

7.       夜神模拟器安装:(x)直接点击exe文gq行安装卛_

 

二?/span>开始?/span>

1.     打开模拟?/span>

2.       Cmd命o(h)H口输入Q?/span>adb  connect 127.0.0.1:62001 链接成功后会(x)昄如下信息

3.       Cmd命o(h)H口输入Q?/span>appium 启动appium服务

4.       打开rideQ加?/span>AppiumLibrarycdQ编写手动化脚本Q编写完毕后Q点击运行即?/span>

 

到此Q?/span>appium1.5的安装和使用介绍完毕Q预大家有个愉快的手机自动化之旅!



lijun 2017-03-03 17:05 发表评论
]]>
自动化工具Robot framework安装说明之windows7http://www.tkk7.com/lijun_li/archive/2016/10/25/431926.htmllijunlijunTue, 25 Oct 2016 08:21:00 GMThttp://www.tkk7.com/lijun_li/archive/2016/10/25/431926.htmlhttp://www.tkk7.com/lijun_li/comments/431926.htmlhttp://www.tkk7.com/lijun_li/archive/2016/10/25/431926.html#Feedback0http://www.tkk7.com/lijun_li/comments/commentRss/431926.htmlhttp://www.tkk7.com/lijun_li/services/trackbacks/431926.html~写背景Q?/span>

2q没有更新博客了(jin)Q自从有娃后旉变得来少Q深M?x)?jin)当妈的不Ҏ(gu)Q整理这个文章是Z(jin)让部门的Ch学习(fn)q个工具能轻杄入门W一养I(x)安装Q同时希望能帮助到其它同行?/span>

 

参考资料:(x)

http://www.cnblogs.com/puresoul/p/3854963.html

http://www.itest.pro/howto-install-robot-framework-autoit-windows-x64/

 

一、安装的软g清单见下图:(x)

二、安装步骤:(x)

安装包名

安装Ҏ(gu)

下蝲地址

备注

1

python

exe文gQ直接双d装,安装完设|?/span>Python环境变量,?#8220;d:\Python27”?#8220;d:\Python27\Scripts”d到环境变?#8220;PATH”中(注意环境变量之间?#8220;;”隔开)

https://www.python.org/download/releases/2.7.12/

一切的基础Q安装\径不能有I格

2

setuptools

下蝲ez_setup.py文gQ把文g攑ֈpython安装目录?/span>scripts目录下,双击文g?/span>

https://pypi.python.org/pypi/setuptools

Python 的套件管理程?/span>

3

pip

1.cmdq入ez_setup.py文g目录Q如Q?/span>

d:\Python27\Scripts

2.?/span>setuptools安装Q?/span>easy_install pip

https://pip.pypa.io/en/latest/index.html

Python 的套件管理程?/span>

4

php

Cmd命o(h)执行Q?/span>

pip install --upgrade pip

?/span>

pip到最新版?/span>

5

robot framework

Cmd命o(h)执行Q?/span>pip install robotframework

https://pypi.python.org/pypi/robotframework

robot framework本n

6

wxPython

exe文gQ直接双d?/span>

http://wxpython.org/download.php#stable

支撑Ride的运行库

7

robotframework-ride

Cmd命o(h)执行Q?/span>pip install robotframework-ride

https://pypi.python.org/pypi/robotframework-ride

Ride

8

robotframework-selenium2library

Cmd命o(h)执行Q?/span>pip install robotframework-selenium2library

https://pypi.python.org/pypi/robotframework-selenium2library

selenium2试库,Zwebdriver驱动

9

robotframework-databaselibrary

Cmd命o(h)执行Q?/span>pip install

robotframework-databaselibrary

https://github.com/franz-see/Robotframework-Database-Library

DB?/span>

10

Pymysql

Cmd命o(h)执行Q?/span>pip install pymysql

https://pypi.python.org/pypi/pymssql

MysqlW三方库

11

pywin32

exe文gQ直接双d装,注意py对应的版?/span>2.7

https://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/

AutoItLibrary安装前提

12

AutoItV3

exe文gQ直接双d?/span>

http://www.autoitscript.com/site/autoit-news/autoit-v3-3-10-0-released/

AutoItLibrary使用前提

13

AutoItLibrary

Cmd命o(h)执行Q?/span>pip install

AutoItLibrary

http://code.google.com/p/robotframework-autoitlibrary/

AutoItLibrary试?/span>

14

Requests

Cmd命o(h)执行Q?/span>pip install requests

https://pypi.python.org/pypi/requests

RequestsLibrary库用前?/span>

15

RequestsLibrary

Cmd命o(h)执行Q?/span>pip install -U robotframework-requests

https://github.com/bulkan/robotframework-requests

http request?/span>

 

三、安装后(g)查:(x)

1.       配置ride为桌面快h式:(x)

1)         新徏快捷方式Q在桌面叛_鼠标Q弹出的菜单选择 新徏-快捷方式 Q然后在 请键入对?/span> 的位|输入这一行命令,C:\Python27\pythonw.exe -c "from robotide import main; main()"Q注?#8220;C:\Python27\pythonw.exe”?/span>python安装的\径,需要换成你?/span>Python所在目录的路径Q注意双引号文?/span>

2)         点击下一步,输入你要建立的快h式的名称Q点d成,看到图标表示已经建好?/span>

3)         昄不爽Q图标要换成机器人图标,需要快h式上点击右键-属性,点击更改图标Q在览里找到目?/span>F:\Python27\Lib\site-packages\robotide\widgetsQ里面有?/span>robot.ico的图标(大家到自q安装目录相同路径L一下)(j)选它之后Q点打开Q确定之后再定可以了(jin)Q双d标,q入ride操作面

2.       Cmd命o(h)下执?/span>ride.pyQ能成功q入ride面说明robot framework安装成功?/span>

3.       ?/span>ride操作面新徏一个项目,?/span>AutoItLibrary?/span>Selenium2Librarycd载,加蝲中如果不昄U色说明AutoItLibrary?/span>Selenium2Library安装成功?/span>

4.       Cmd命o(h)下执?/span>pip listQ可以查看安装的包列表有哪些

 

 

四、特别说明:(x)

1.安装robotframework-selenium2library 后会(x)自动安装selenium的最?/span>3.0版本Q?/span>selenium 3.0以上版本安装后编写的自动化脚本打开firefox览器会(x)p|Q?/span>robotframework?x)报如下错?/span>

command: pybot.bat --argumentfile c:\users\administrator\appdata\local\temp\RIDEcatnr4.d\argfile.txt --listener F:\Python27\lib\site-packages\robotide\contrib\testrunner\TestRunnerAgent.py:14051:False F:\test\aaa

或者这个错?/span>

WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line

解决办法Q?/span>

1)       ?/span>pip命o(h)卸蝲selenium3.0版本,命o(h)Q?/span>pip uninstall selenium

2)       下蝲selenium 2.53.6 版本Q包名:(x)selenium-2.53.6.tar.gzQ下载地址Q?/span>https://pypi.python.org/pypi/selenium/2.53.6#downloads

3)       安装selenium-2.53.6.tar.gzQ解?/span>selenium-2.53.6.tar.gzQ把解压的文件拷贝到python安装目录文g夹下Q如Q?/span>D:\Python27\Lib\site-packagesQ?/span>cmdq入selenium解压的文件夹路径Q执行如下命令:(x)python setup.py install

4)       Cmd执行pip list 查看安装?/span>selenium版本是否正确

2.python下如何安?/span>.whl包?

{:(x)pip install wheelQ先安装wheelQ然?/span>pip install 包名?/span>.whl 卛_安装.whl包?/span>

五、安装过E遇到的问题汇总:(x)

问:(x)Python有两个版本:(x)2.X?/span>3.XQ装那个版本比较好?

{:(x)׃windows7下,Python 对应?/span>wxPython 版本只支?/span> 2.x 不支?/span>3.xQ因?/span>Python目前只能?/span>2.x版本

问:(x)pip安装完毕后,如何升Q?/span>

{:(x)使用命o(h)Q?/span>pip install --upgrade pip

问:(x)win76下安?/span>autoitlibraryp|

{:(x)必须先安?/span>pywin32Qƈ?/span>Python的安装目录不能有I格Q如果有I格?x)导致注?/span>autoit?/span>dll时出?/span>

 

到此Q安装完毕,可以?/span>ride~写自己的自动化试脚本Q开始自动化试之旅Q!Q?/span>^_^?/span>






lijun 2016-10-25 16:21 发表评论
]]>
Ruby on rails ??http://www.tkk7.com/lijun_li/archive/2012/11/07/390934.htmllijunlijunWed, 07 Nov 2012 03:37:00 GMThttp://www.tkk7.com/lijun_li/archive/2012/11/07/390934.htmlhttp://www.tkk7.com/lijun_li/comments/390934.htmlhttp://www.tkk7.com/lijun_li/archive/2012/11/07/390934.html#Feedback0http://www.tkk7.com/lijun_li/comments/commentRss/390934.htmlhttp://www.tkk7.com/lijun_li/services/trackbacks/390934.html~写背景Q?br />      Klobo职已经3周了(jin)Q接手自动化~监控报告工具?周了(jin)Q有一部分功能用到?jin)ruby on railsQ业务部门提Z(jin)个新需求,以后每天都要抽一些时间来学习(fn)学习(fn)才能搞定q个工具的维护,同时Z后自己搭动化试工具框架做准备。今天就从最基础的开始?/p>

本文资料来源Q?a >http://zh.wikipedia.org/wiki/Ruby_on_Rails

?/strong>
    Ruby on Rails 是一个可以你开发,部vQ维?web 应用E序变得单的框架?br />    Ruby on RailsQ简URailsQ是一个用Ruby语言写的开源Web应用框架Q它是严格按照MVCl构开发的。它努力使自w保持简单,来实际的应用开发时的代码更,使用最的配置?br />    Ruby on Rails是一U结合Ruby语言与Railsq_的一U网늼E语aQRuby语言以自然、简z、快速著Uͼ全面支持面向对象E序设计Q而Rails则是Rubyq泛应用方式之一Q在Railsq_上设计出一套独特的MVC开发架构,采取模型QModelQ、外观(ViewQ、控制器QControllerQ分ȝ开发方式,不但减少?jin)开发中的问题,更简化了(jin)许多J复的动作?br />    Rails的设计原则包?#8220;不做重复的事”QDon't Repeat YourselfQ和“惯例优(sh)讄”QConvention Over ConfigurationQ?br />

来历
    Ruby的作者于1993q??4日开始编写RubyQ直?995q?2月才正式公开发布于fjQ新ȝQ。之所以称为RubyQ是因ؓ(f)Perl的发音与6月的诞生石pearlQ珍珠)(j)相同Q因此Ruby?月的诞生石rubyQ红宝石Q命名?br />    2004q?月,Rails的创始h大卫•L(fng)梅尔•韩森?7signals公司的项目管理工具Basecamp里面分离出Ruby on RailsQƈ且以开源方式发布?br />    Rails在发布以后的短短的时间内p速获得很多开发h员欢q,大卫认ؓ(f)q归功于Rails设计为opinionated software。Rails当中有很多规矩从一开始就按照David的意见制定好?jin),所以在Rails上开发应用程序时Q开发h员可以专注于应用E序?w的设计Q省却那些花在了(jin)解及(qing)配置基础框架上面的时间。这也正是Rails很重要的_“U定优(sh)配置”Q开发h员遵照Rails本n的惯例便可以省却配置l态档的时_(d)此外QRails虽然惯例的重要及(qing)便利性,但针对不同的需求,Rails也提供修改的I间让开发h员可以进行自定义的组态?br />

q作模式
    Rails框架是以固定的命名习(fn)惯来自动判断整个架构Q默认下?x)将|址分析?a href="http://domain-name/ControllerName">http://domain-name/ControllerName /ActionName/Attribute/ 然后q行目标Controller中的ActionQƈ取出指定的ViewQ视图)(j)回传l浏览器昄。面Ҏ(gu)据库则以ModelQ模块)(j)的Ş式,借由Active Record作ؓ(f)与数据库之间的传输接口?br />

Rails的MVC架构
    Ruby on Rails的模?视图-控制器架构由以下各部分组成:(x)
    模型
          模型包含着应用的状态,状态可能是临时的也可能是长久性保存在数据库中的。需要注意的是模型不仅包含数据,而且包含数据代表的逻辑。在Rails中,模型通常是由一些代表关pL据库中RDBMS表的cȝ成的?br />          在RoR中,模型cL通过Active Record模式q行处理的。一般来_(d)E序员要做的是(h)承ActiveRecordc,同时E序?x)自动计出要用哪个RDBMS表,q个表有哪些列。表与表之间的关p通过单的命o(h)来指明?br />    控制?/strong>
           控制器将用户界面和数据模型关联v来,q充当协调运作的角色。它接收各种用户操作Q更新数据模型,q用合适的view展示l果l用戗像他的名字一P可以说应用的主要控制中心(j)?yu)是各个控制器?br />    视图
           View负责Ҏ(gu)Model中的数据昄用户界面。作为web应用QRails里的View通常是生成整个或者部分网c(din)当然可以是XML或者甚x(chng)JavaScript代码。表Cؓ(f)使用内嵌Ruby的HTMLQXMLQJavaScript模板?/p>

    Rails的组成模?/strong>
Rails使用如下Gems
actionmailer (1.3.2)
    Service layer for easy email delivery and testing.
actionpack (1.13.2)
    Web-flow and rendering framework putting the VC in MVC.
actionwebservice (1.2.2)
    Web service support for Action Pack.
activerecord (1.15.2)
    Implements the ActiveRecord pattern for ORM.
activesupport (1.4.1)
    Support and utility classes used by the Rails framework.
rails (1.2.2)
    Web-application framework with template engine, control-flow layer, and ORM.
模型QActive Record
ActiveRecord实现?jin)Rails的对象关pL?br />控制器和视图QActionPack
ActionController是Rails中的控制器,提供各种Ҏ(gu)供用h作用?br />ActionView是Rails中的视图Q负责展现用L(fng)面?br />常用实用工具QActiveSupport
ActiveSupport包提供一些工具和支持代码?br />处理邮gQActionMailer
ActionMailer用来发送和接收email?br />Web服务QActionWebService
ActionWebService来提供SOAP和XML-RPC支持。需要注意的是,Rails向使用更加单明?jin)的REST方式web服务而不再提倡SOAP格式的web服务。ActionWebServices在未来的版本里面?x)逐步淡出?br />|络资源QActionResource
用REST对Web服务提供?jin)优U的支持。这U风格的Web服务使用指定的资源?br />

Rails中的AJAX
AJAXQ异步JavaScript与XMLQ是一U异步传输接口,可以借由览器用JavaScript和XML来处理传输请求,而将Web服务器作为后台来处理Q这h蝲入额外的|页。Rails自带有Prototype?来实现这个技术。Ajax已经和Ruby on Railsl合在了(jin)一hZ(jin)一个新的系l叫?#8220;Ajax on Rails”。Rails提供一些助手工h更方便地实现AJAX应用?Rails提供?jin)一些HelperQ可以在服务器一端用URuby语言生成l浏览器用的JavaScript代码Q从而让Rails的开发者不需掌握 JavaScript可以简单方便的开发出AJAX的应用?br />

Rails和W(xu)eb服务
E早的版本的Rails中提供了(jin)ActionWebService作ؓ(f)开发XML-RPC和SOAP的web服务的基。但是最q的Rails 1.2更加們֐于是用REST方式的web服务Q而ActionWebService在Rails 2.0中作为plugin而不再是rails核心(j)的一部分?br />

Web服务器支?/strong>
对于开发和试来说Q一个很轻量的WEBrick|页服务器已l被包含在了(jin)Ruby中,常被用来作ؓ(f)应用服务器。而对于生产应用,常推荐用带FastCGI的Apache或者LighttpdQ但M支持CGI或者FastCGI的网|务器都可以用。在Apache上,mod_ruby也可以考虑用来提高性能?br />

数据库支?/strong>
使用Rails的架构开发网l应用一般都使用数据库,所以推荐用一个关pL据库pȝ来进行数据存储,若不能运行一个关pL据库服务器,Rails也支持SQLite库。很多关pL据库pȝ都支持,包括MySQL、PostgreSQL、SQLite、IBM DB2、Oracle和SQL Server?br />

pȝ要求
• Ruby语言
• Web服务器,如Apache、lighttpd{?br />• FastCGIQ或者MongrelZ(jin)提高效率
• 数据库和驱动E序

集成开发环?/strong>
      开发用的IDE有:(x)Eclipse , IntelliJ, Aptana?br />

cM的框?/strong>
• CakePHP
• Django
• TurboGears
• CodeIgniter



lijun 2012-11-07 11:37 发表评论
]]>
ruby+watir之自动化试脚本~写规范Q!Q?/title><link>http://www.tkk7.com/lijun_li/archive/2010/07/22/326820.html</link><dc:creator>lijun</dc:creator><author>lijun</author><pubDate>Thu, 22 Jul 2010 03:33:00 GMT</pubDate><guid>http://www.tkk7.com/lijun_li/archive/2010/07/22/326820.html</guid><wfw:comment>http://www.tkk7.com/lijun_li/comments/326820.html</wfw:comment><comments>http://www.tkk7.com/lijun_li/archive/2010/07/22/326820.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/lijun_li/comments/commentRss/326820.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/lijun_li/services/trackbacks/326820.html</trackback:ping><description><![CDATA[  <p><span style="font-family: ?hu)?>~写背景Q?/span></p> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>试l团队经q?/span>1<span style="font-family: ?hu)?>q多的实战,试工作程?qing)规范大安已经明白q能很好的完成每个月的测试Q务;下半q要向工作质量和工作效率q上一个台Ӟ需要发挥大家的力量Q自动化试脚本~写q几个月在测试Q务中让大家感受了(jin)一把;大家都认识到Q要惌q些自动化测试脚本能高效的维护、用,让新人和老h更容易的明白q些代码Q我们需要一个自动化试脚本~写的规范?/span></p> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>l过大家的努力,得出?jin)这么个初稿Q放在这里和大家交流交流Q希望有l验的同行能l些?br /> <br /> </span></p> <h3 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ?hu)?><br /> <span style="font-family: ?hu)?><span style="font-size: 12pt"><span style="font-family: ?hu)?>一、命?/span><span style="font-family: ?hu)?>规范</span></span></span></span></h3> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.1 <span style="font-family: ?hu)?>全体</span></h4> <p style="margin-left: 35.7pt; text-indent: -17.85pt; text-align: left; tab-stops: list 36.0pt" align="left"><span style="color: black; font-family: Arial">1.<span style="font: 7pt 'Times New Roman'">      </span></span><span style="color: black; font-family: ?hu)?>原则上不使用单词的省略词?/span></p> <p style="margin-left: 35.7pt; text-indent: -17.85pt; text-align: left; tab-stops: list 36.0pt" align="left"><span style="color: black; font-family: Arial">2.<span style="font: 7pt 'Times New Roman'">      </span></span><span style="color: black; font-family: ?hu)?>对于作用域小的@环变量,?/span><span style="color: black; font-family: Arial">i, j, k</span><span style="color: black; font-family: ?hu)?>q样的名字顺序用?/span></p> <p style="margin-left: 35.7pt; text-indent: -17.85pt; text-align: left; tab-stops: list 36.0pt" align="left"><span style="color: black; font-family: Arial">3.<span style="font: 7pt 'Times New Roman'">      </span></span><span style="color: black; font-family: ?hu)?>对于作用域小的变量名Q可以用类名的省略语?/span><span style="color: black; font-family: Arial"> (</span><span style="color: black; font-family: ?hu)?>?/span><span style="color: black; font-family: Arial">: </span><span style="color: black; font-family: Arial">eo = ExampleObject.new</span><span style="color: black; font-family: Arial">)</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.2 <span style="font-family: ?hu)?>cd和模块名</span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>cM?qing)模块?/span><span style="color: black; font-family: ?hu)?>、各单词的每头一个字母大写,不要使用“</span><span style="color: black; font-family: Arial">_</span><span style="color: black; font-family: ?hu)?>”下划U等分隔W。但是,?/span><span style="color: black; font-family: Arial">HTTP</span><span style="color: black; font-family: ?hu)?>q样的通用~略语,全都照样大写。名U最好?#8220;名词”或?#8220;形容?/span><span style="color: black; font-family: Arial">+</span><span style="color: black; font-family: ?hu)?>名词”</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>正例Q?/span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">OtherClass</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">HTTPClient</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: ?hu)?>例:(x)</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">Other_Class</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">OTHERCLASS</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">HttpClient</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">HTTPclient</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">HTTP_Client</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.3 <span style="font-family: ?hu)?>Ҏ(gu)?/span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>Ҏ(gu)名全都小写、各个单词之间用“</span><span style="color: black; font-family: Arial">_</span><span style="color: black; font-family: ?hu)?>”分隔。方法名中?#8220;动词”或?#8220;动词</span><span style="color: black; font-family: Arial">+</span><span style="color: black; font-family: ?hu)?>名词”</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>正例</span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">add_something</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>误例</span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">addsSomething</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">Add_Something</span></p> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>q回真假值的Ҏ(gu)的命名,在动词或形容词后q加“</span><span style="color: black; font-family: Arial">?</span><span style="color: black; font-family: ?hu)?>”Q对形容词,不用d“</span><span style="color: black; font-family: Arial">is_</span><span style="color: black; font-family: ?hu)?>”?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>正例</span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">visible?</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>误例</span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">is_visible</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">is_visible?</span></p> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>另外Q在使用h破坏性和非破坏性的Ҏ(gu)时候,要在破坏性的Ҏ(gu)名后q加“</span><span style="color: black; font-family: Arial">!</span><span style="color: black; font-family: ?hu)?>”?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">split</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">split! # </span><span style="color: black; font-family: ?hu)?>h破坏性的</span><span style="color: black; font-family: Arial">split</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.4 <span style="font-family: ?hu)?>常数?/span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>cd模块名以外的常数名,全都用大写,单词之间?#8220;</span><span style="color: black; font-family: Arial">_</span><span style="color: black; font-family: ?hu)?>”来分隔?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">EXAMPLE_CONSTANT</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.5 <span style="font-family: ?hu)?>变量?/span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>对于变量名,全都用小写,单词之间?#8220;</span><span style="color: black; font-family: Arial">_</span><span style="color: black; font-family: ?hu)?>”来分隔。全局变量?/span><span style="color: black; font-family: Arial">$</span><span style="color: black; font-family: ?hu)?>开_(d)实例变量?/span><span style="color: black; font-family: Arial">@</span><span style="color: black; font-family: ?hu)?>开_(d)cd量以</span><span style="color: black; font-family: Arial">2</span><span style="color: black; font-family: ?hu)?>?/span><span style="color: black; font-family: Arial">@</span><span style="color: black; font-family: ?hu)?>开头?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">tmp</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">local_variable</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">@instance_variable</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">$global_variable</span></p> <p style="margin: 0cm 0cm 12pt 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">@@class_variable</span></p> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>变量名称要能清晰表达该变量的含义Q如</span><span style="color: black; font-family: Arial">order_state</span><span style="color: black; font-family: ?hu)?>Q记录订单的状?/span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">1.6 <span style="font-family: ?hu)?>文g?/span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>文g名全都用小写字母,单词之间?#8220;</span><span style="color: black; font-family: Arial">_</span><span style="color: black; font-family: ?hu)?>”来分隔。另外,可以把文件中的已l变换的主要cd作ؓ(f)文g名来使用?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">foo.rb # </span><span style="color: black; font-family: ?hu)?>定义?/span><span style="color: black; font-family: ?hu)?>c?/span><span style="color: black; font-family: Arial">Foo</span></p> <p style="margin-left: 42pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">foo_bar.rb # </span><span style="color: black; font-family: ?hu)?>定义?/span><span style="color: black; font-family: ?hu)?>c?/span><span style="color: black; font-family: Arial">FooBar<br /> </span></p> <h3 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ?hu)?><br /> 二、代码排版规?/span></h3> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">2.1 <span style="font-family: ?hu)?>注释风格</span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>注释的位|应与被描述的代码相邻,可以攑֜代码的上Ҏ(gu)x(chng)Q不要放在代码的下方Q注释内容应明确表达被注释代码的含义?/span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>例:(x)</span></strong></p> <p><span style="font-family: Arial">    # Return a Watir::IE object for an existing IE window. Window can be</span></p> <p><span style="font-family: Arial">    # referenced by url, title, or window handle.</span></p> <p><span style="font-family: Arial">    # Second argument can be either a string or a regular expression in the </span></p> <p><span style="font-family: Arial">    # case of of :url or :title. </span></p> <p><span style="font-family: Arial">    # IE.attach(:url, 'http://www.google.com')</span></p> <p><span style="font-family: Arial">    # IE.attach(:title, 'Google')</span></p> <p><span style="font-family: Arial">    # IE.attach(:hwnd, 528140)</span></p> <p><span style="font-family: Arial">    # This method will not work when</span></p> <p><span style="font-family: Arial">    # Watir/Ruby is run under a service (instead of a user).</span></p> <p style="margin-left: 21pt"><span style="font-family: Arial">defself.attach(how, what)</span></p> <p style="margin-left: 21pt"><span style="font-family: Arial">ie = new true # don't create window</span></p> <p style="margin-left: 21pt"><span style="font-family: Arial">ie._attach_init(how, what)</span></p> <p style="margin-left: 21pt"><span style="font-family: Arial">ie</span></p> <p style="margin-left: 21pt"><span style="font-family: Arial">end</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">2.2 <span style="font-family: ?hu)?>代码格式</span></h4> <h4 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-size: 12pt">   2.2.1</span><span style="font-size: 12pt; font-family: ?hu)?>?/span><span style="font-size: 12pt; font-family: ?hu)?>?/span><span style="font-size: 12pt; font-family: ?hu)?>I格</span></h4> <ol style="margin-top: 0cm" type="1"> <li style="tab-stops: list 36.0pt"><span style="font-family: ?hu)?>逗号“Q?#8221;、分?#8220;Q?#8221;之后要留I格</span> <li style="tab-stops: list 36.0pt"><span style="font-family: ?hu)?>赋值操作符、比较操作符、算术操作符、逻辑操作W,?#8220;</span><span style="font-family: Arial">=</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">+=</span><span style="font-family: ?hu)?>”“</span><span style="font-family: Arial">>=</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial"><=</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">+</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">*</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">%</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">&&</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">||</span><span style="font-family: ?hu)?>”{二元操作符的前后都加空格或者前后都不加I格?/span> </li> </ol> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>正例Q?/span></strong></p> <p style="margin-left: 46.5pt"><span style="font-family: Arial">a+b</span></p> <p style="margin-left: 46.5pt"><span style="font-family: Arial">a + b</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>误例</span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 46.5pt"><span style="font-family: Arial">a+ b</span></p> <p style="margin-left: 46.5pt"><span style="font-family: Arial">a +b</span></p> <ol style="margin-top: 0cm" type="1" start="3"> <li style="tab-stops: list 36.0pt"><span style="font-family: ?hu)?>一元操作符?#8220;</span><span style="font-family: Arial">!</span><span style="font-family: ?hu)?>”?#8220;</span><span style="font-family: Arial">~</span><span style="font-family: ?hu)?>”以及(qing)“Q]”?#8220;</span><span style="font-family: Arial">.</span><span style="font-family: ?hu)?>”?#8220;Q:(x)”q类操作W前后不加空根{?/span> <li style="tab-stops: list 36.0pt"><span style="font-family: ?hu)?>函数名之后不要留I格</span> </li> </ol> <h4 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-size: 12pt">    2.2.2</span><span style="font-size: 12pt; font-family: ?hu)?>代码~进</span></h4> <p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: ?hu)?>Z(jin)增加E序的可L而进行的适当的羃q,~进的幅度以</span><span style="color: black; font-family: Arial">2</span><span style="color: black; font-family: ?hu)?>个字Wؓ(f)宜。另外,~进的时候,只可使用I格Q不可?/span><span style="color: black; font-family: Arial">TAB</span><span style="color: black; font-family: ?hu)?>Q编E工具不同的时候,看v来会(x)不一P(j)</span></p> <p style="margin-left: 42pt; text-align: left" align="left"><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">:</span></strong></p> <p style="margin-left: 18pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">if x > 0</span></p> <p style="margin-left: 18pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial"> if y > 0</span></p> <p style="margin-left: 18pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">    puts "x > 0 && y > 0"</span></p> <p style="margin-left: 18pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial"> end</span></p> <p style="margin-left: 18pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: black; font-family: Arial">end</span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-size: 12pt">    2.2.3</span><span style="font-size: 12pt; font-family: ?hu)?>I</span></h4> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>同一函数内,不同含义的代码段之间IZ行;不同函数和不同类之间IZ?/span></p> <h4 style="margin: 0cm 0cm 0pt; line-height: normal">2.3.<span style="font-family: ?hu)?>输出(g)查点的格?/span></h4> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>输出(g)查点采用“</span><span style="font-family: Arial">---</span><span style="font-family: ?hu)?>输出语句</span><span style="font-family: Arial">---</span><span style="font-family: ?hu)?>”格式Q输?gu)句应z清晰的表达意思?br /> </span></p> <h3 style="margin: 0cm 0cm 0pt; line-height: normal"><span style="font-family: ?hu)?><br /> 三、代码示?/span></h3> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>代码CZ如下?br /> </span></p> <img src ="http://www.tkk7.com/lijun_li/aggbug/326820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/lijun_li/" target="_blank">lijun</a> 2010-07-22 11:33 <a href="http://www.tkk7.com/lijun_li/archive/2010/07/22/326820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源Ruby+Watir自动化测试工具介l?安装说明Q!Q?/title><link>http://www.tkk7.com/lijun_li/archive/2009/09/24/296332.html</link><dc:creator>lijun</dc:creator><author>lijun</author><pubDate>Thu, 24 Sep 2009 10:59:00 GMT</pubDate><guid>http://www.tkk7.com/lijun_li/archive/2009/09/24/296332.html</guid><wfw:comment>http://www.tkk7.com/lijun_li/comments/296332.html</wfw:comment><comments>http://www.tkk7.com/lijun_li/archive/2009/09/24/296332.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.tkk7.com/lijun_li/comments/commentRss/296332.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/lijun_li/services/trackbacks/296332.html</trackback:ping><description><![CDATA[  <p><span style="font-family: ?hu)?>~写背景Q?/span></p> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>有半q多没有?/span><strong><span style="color: #202020; font-family: Verdana">Ruby+Waitr</span></strong><span style="font-family: ?hu)?>的自动化试脚本?jin),今天开始封|测试机器会(x)被关闭,赶着q段国庆(jin)I闲旉Q好好整整开源的自动化测试工P争取淮v战役打完后,l织试l的帅哥女们开始写些自动化试代码Qؓ(f)明年的测试工作效率提升打基础?/span></p> <p style="text-indent: 21pt"><span style="font-family: ?hu)?>好久没装Q今天费?jin)一上午l于l装上了(jin)Q这ơ要好好整理出文档才行,便于下次使用时可查阅Q同时共享给对这斚w感兴的试同行?/span></p> <p><strong><span style="font-size: 12pt; font-family: ?hu)?>一、工具介l:(x)</span></strong></p> <p><strong><span style="color: #202020; font-family: Verdana">Ruby</span></strong> <span style="color: black; font-family: Arial">Ruby</span><span style="color: black; font-family: ?hu)?>是面向对象的~程语言Q它q求的是</span><span style="color: black; font-family: ˎ̥">“</span><span style="color: black; font-family: ?hu)?>便快L(fng)面向对象~程</span><span style="color: black; font-family: ˎ̥">”</span><span style="color: black; font-family: ?hu)?>?/span><span style="color: black; font-family: Arial">Ruby</span><span style="color: black; font-family: ?hu)?>是解释型语言Q因此不需~译卛_快捷地编E。同?/span><span style="color: black; font-family: Arial">Ruby</span><span style="color: black; font-family: ?hu)?>hcM</span><span style="color: black; font-family: Arial">Perl</span><span style="color: black; font-family: ?hu)?>的强大的文本处理功能Q它可ƈ不只是个玩具Q?zhn)可以用它来进行实用的~程。此外,(zhn)还可以很方便地使用</span><span style="color: black; font-family: ˎ̥">C</span><span style="color: black; font-family: ?hu)?>语言来扩?/span><span style="color: black; font-family: Arial">Ruby</span><span style="color: black; font-family: ?hu)?>的功能,因此可以把她当作各种库的前端来用?/span></p> <p><strong><span style="color: #202020; font-family: Verdana">Watir</span></strong> <span style="color: black; font-family: Arial">Watir( Web Application Testing in Ruby) </span><span style="color: black; font-family: ?hu)?>是一个优U的开源工P用于开发基?/span><span style="color: black; font-family: Arial">Web </span><span style="color: black; font-family: ?hu)?>应用的自动化试E序。它使用</span><span style="color: black; font-family: Arial">Ruby </span><span style="color: black; font-family: ?hu)?>脚本语言Q提供了(jin)轻量U的自动化测试程序框架和丰富的开发库Q有效地加速了(jin)自动化测试程序开发?/span></p> <p><a name="2.Watir的主要特性以?qing)用Watir开发自动化E序的优势|outline"><strong><span style="color: #202020; font-family: Verdana">Watir </span></strong></a><strong><span style="color: #202020; font-family: ?hu)?>的主要特性以?qing)?/strong></span><strong><span style="color: #202020; font-family: Verdana"> Watir </strong></span><strong><span style="color: #202020; font-family: ?hu)?>开发自动化E序的优?/strong></span></p> <p style="text-indent: 26.25pt"><span style="color: black; font-family: Arial">Watir</span><span style="color: black; font-family: ?hu)?>是一个轻量的用于开发基?/span><span style="color: black; font-family: Arial">Web</span><span style="color: black; font-family: ?hu)?>应用的自动化试框架Q它Z</span><span style="color: black; font-family: Arial">Ruby</span><span style="color: black; font-family: ?hu)?>语言Q提供了(jin)丰富的开发库Q简化了(jin)自动化测试程序开发。下面我们ȝ?/span><span style="color: black; font-family: Arial">Watir</span><span style="color: black; font-family: ?hu)?>的主要一些优良特性:(x)</span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Watir </span><span style="color: black; font-family: ?hu)?>Z</span><span style="color: black; font-family: ˎ̥"> Ruby </span><span style="color: black; font-family: ?hu)?>语言?/span><span style="color: black; font-family: ˎ̥"> Ruby </span><span style="color: black; font-family: ?hu)?>是面向对象语aQ功能强大,单易用。程序解释执行不用编译;</span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Watir </span><span style="color: black; font-family: ?hu)?>支持多种操作pȝq_Q包?/span><span style="color: black; font-family: ˎ̥"> Windows, Mac, Linux </span><span style="color: black; font-family: ?hu)?>Q同时支持多U主浏览器Q如</span><span style="color: black; font-family: ˎ̥"> IE, Firefox, Chrome </span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Watir </span><span style="color: black; font-family: ?hu)?>提供?jin)丰富的开发库Q封装了(jin)包括览器窗?/span><span style="color: black; font-family: ˎ̥"> windows</span><span style="color: black; font-family: ?hu)?>Q?/span><span style="color: black; font-family: ˎ̥">button, link, dialog, image, table, div </span><span style="color: black; font-family: ?hu)?>{绝大多?/span><span style="color: black; font-family: ˎ̥"> HTML </span><span style="color: black; font-family: ?hu)?>对象cdQ方便测试h员快速构动化试E序?/span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Ruby </span><span style="color: black; font-family: ?hu)?>提供?jin)强大的交互命o(h)工具</span><span style="color: black; font-family: ˎ̥"> IRB</span><span style="color: black; font-family: ?hu)?>Q?/span><span style="color: black; font-family: ˎ̥">Interactive Ruby Shell</span><span style="color: black; font-family: ?hu)?>Q?/span><span style="color: black; font-family: ˎ̥">, </span><span style="color: black; font-family: ?hu)?>?/span><span style="color: black; font-family: ˎ̥"> Watir </span><span style="color: black; font-family: ?hu)?>E序开发中Q我们?/span><span style="color: black; font-family: ˎ̥"> IRB </span><span style="color: black; font-family: ?hu)?>调试代码。别于传l调试方法,试人员可以单独一条命令或者一D늨序进行调试,从而能够快速定位错误,节省调试旉?/span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Ruby </span><span style="color: black; font-family: ?hu)?>提供?/span><span style="color: black; font-family: ˎ̥"> Test::Unit </span><span style="color: black; font-family: ?hu)?>单元试框架Q通过l承该框Ӟ我们可以Ҏ(gu)试用例,试用例?/span><span style="color: black; font-family: ˎ̥"> (Test Suites) </span><span style="color: black; font-family: ?hu)?>q行灉|方便地组合和调用Qƈ且可利用断言</span><span style="color: black; font-family: ˎ̥"> (Assertion) </span><span style="color: black; font-family: ?hu)?>来验证测试结果?/span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ?hu)?>其他脚本语言?/span><span style="color: black; font-family: ˎ̥"> Perl, Python, Shell </span><span style="color: black; font-family: ?hu)?>{也可以很好地集成到</span><span style="color: black; font-family: ˎ̥"> Watir </span><span style="color: black; font-family: ?hu)?>E序中?/span></p> <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="color: black; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">         </span></span><span style="color: black; font-family: ˎ̥">Watir </span><span style="color: black; font-family: ?hu)?>E序在运行时Q允许测试h员在该测试机器上讉K其他|页或者进行其他操作而不?x)?jing)响到对象识别的结果?/span></p> <p><strong><span style="font-size: 12pt; font-family: ?hu)?>二、开源自动化试工具l合Q?/span></strong><strong><span style="color: #202020; font-family: Verdana">Ruby+Watir</span></strong><strong><span style="font-size: 12pt; font-family: ?hu)?>安装</span></strong></p> <p><strong><span style="color: #202020; font-family: ?hu)?>安装准备Q?/span></strong></p> <p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><strong>1.<span style="font: 7pt 'Times New Roman'">       </span></strong><strong><span style="font-family: ?hu)?>工具安装包准备:(x)</span></strong></p> <p><span style="color: black; font-family: Arial">Ruby</span><span style="font-family: ?hu)?>官方下蝲地址Q?/span><a >http://www.ruby-lang.org/zh_cn/downloads/</a><span style="font-family: ?hu)?>Q稳定版?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">Ruby 1.8.6</span></strong></p> <p><span style="color: black; font-family: Arial">Watir</span><span style="font-family: ?hu)?>下蝲地址Q?/span><a >http://rubyforge.org/frs/?group_id=104&release_id=28016</a><span style="font-family: ?hu)?>Q徏议装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">watir 1.5.2</span></strong></p> <p><span style="color: black; font-family: Arial">Firefox</span><span style="font-family: ?hu)?>下蝲地址Q?/span><a >http://www.hacker.cn/Get/gjrj/06102608545293311.shtml</a><span style="font-family: ?hu)?>Q徏议装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">2.0</span></strong></p> <p><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">Gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>下蝲地址Q?/span></strong><a >http://rubyforge.org/frs/?group_id=104&release_id=28016</a><span style="font-family: ?hu)?>Q?/span></p> <p><span style="font-family: ?hu)?>装:(x)</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">rubygems-update-1.3.4.gem</span></strong></p> <p><strong> </strong></p> <p><strong><span style="color: black; font-family: Arial">Firefox</span></strong><strong><span style="color: black; font-family: ?hu)?>插g</span></strong><strong><span style="color: black; font-family: Arial">jssh</span></strong><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">firebug</span></strong><strong><span style="color: black; font-family: ?hu)?>?/span></strong><strong><span style="color: black; font-family: Arial">firewatir</span></strong><strong><span style="color: black; font-family: ?hu)?>下蝲</span></strong></p> <p>Jssh<span style="font-family: ?hu)?>下蝲地址Q用</span>Google<span style="font-family: ?hu)?>搜烦(ch)Q之前找的忘记是那了(jin)Q徏议装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">jssh-WINNT-2[1].x.xpi</span></strong></p> <p>Firebug<span style="font-family: ?hu)?>下蝲地址Q用</span>google<span style="font-family: ?hu)?>搜烦(ch)Q之前找的忘记是那了(jin)Q徏议装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firebug-1.05</span></strong></p> <p>Firewatir<span style="font-family: ?hu)?>下蝲地址Q?/span><u><span style="font-size: 10pt; color: blue; font-family: Arial"><a >http://code.google.com/p/firewatir/downloads/list</a></span></u><span style="font-family: ?hu)?>Q徏议装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firewatir-1.1</span></strong></p> <p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><strong>2.<span style="font: 7pt 'Times New Roman'">       </span></strong><strong><span style="font-family: ?hu)?>安装步骤Q?/span></strong></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: ?hu)?>安装环境Q?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">Windows xp</span></strong></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: ?hu)?>安装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><span style="font-family: ?hu)?>Q直接点?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><span style="font-family: ?hu)?>?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">exe</span></strong><span style="font-family: ?hu)?>安装文g卛_</span></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: ?hu)?>安装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firefox</span></strong><span style="font-family: ?hu)?>Q直接点?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">exe</span></strong><span style="font-family: ?hu)?>安装文g卛_</span></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: ?hu)?>安装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firefox</span></strong><span style="font-family: ?hu)?>插gQ安装方法:(x)打开</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firefox</span></strong><span style="font-family: ?hu)?>览器,点击“文g”</span>/<span style="font-family: ?hu)?>“打开”Q选择插g文g名,安装卛_Q?strong><span style="color: red">提醒</span></strong>Q需要安装插件有Q?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">jssh</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firebug</span></strong><span style="font-family: ?hu)?>?/span></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><strong><span style="font-weight: normal; font-size: 10pt; color: #202020; font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span></strong><span style="font-family: ?hu)?>安装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firewatir</span></strong><span style="font-family: ?hu)?>Q安装方法:(x)点击“开?#8221;</span>/<span style="font-family: ?hu)?>“q行”Q在面输入命o(h)Q?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">cmd</span></strong><span style="font-family: ?hu)?>Q进?/span>DOS<span style="font-family: ?hu)?>命o(h)操作界面Q进?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><span style="font-family: ?hu)?>安装的目录,输入命o(h)Q?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem install firewatir-1.1.gem</span></strong></p> <p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-size: 10pt; color: #202020; font-family: Wingdings">Ø<span style="font: 7pt 'Times New Roman'">         </span></span><span style="font-family: ?hu)?>安装</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">watir </span></strong></p> <p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">1)<span style="font: 7pt 'Times New Roman'">      </span></span></strong><span style="font-family: ?hu)?>点击“开?#8221;</span>/<span style="font-family: ?hu)?>“q行”Q在面输入命o(h)Q?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">cmd</span></strong><span style="font-family: ?hu)?>Q进?/span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">DOS</span></strong><span style="font-family: ?hu)?>命o(h)操作界面Q?/span></p> <p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">2)<span style="font: 7pt 'Times New Roman'">      </span></span></strong><span style="font-family: ?hu)?>q入</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><span style="font-family: ?hu)?>安装的目录,?/span><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby –v</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>Q查?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>版本Q显C:(x)</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">Ruby 1.8.6</span></strong></p> <p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">3)<span style="font: 7pt 'Times New Roman'">      </span></span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>输入</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem –v</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>Q查?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>版本Q显C?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">0.94</span></strong></p> <p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">4)<span style="font: 7pt 'Times New Roman'">      </span></span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>升</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>Q把</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>包拷贝到</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>安装目录Q在</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">dos</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>界面输入命o(h)Q?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem install </span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">rubygems-update-1.3.4.gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>Q?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>包名Q?br /> <br /> 提醒Q安装完后进入ruby目录Q?font style="background-color: #c7edcc">lib\ruby\gems\1.8\gems\rubygems-update-1.3.4Q点击这个文件夹中的文gQ?font style="background-color: #c7edcc">setup.rb</font>Q升Ugem卛_</font><br /> </span></strong></p> <p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">5)<span style="font: 7pt 'Times New Roman'">      </span></span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>安装</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">watir</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>包,?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">watir</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>包拷贝到</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>安装目录Q在</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">dos</span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: ?hu)?>界面输入命o(h)Q?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">gem install </span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">watir-1.5.2.gem</span></strong></p> <p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><strong>3.<span style="font: 7pt 'Times New Roman'">       </span></strong><strong><span style="font-family: ?hu)?>安装完毕(g)?/span></strong></p> <p style="text-indent: 21.1pt"><strong><span style="font-family: ?hu)?>?/span></strong><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">dos</span></strong><strong><span style="font-family: ?hu)?>界面Q?/span></strong><span style="font-family: ?hu)?>q入</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">firewatir</span></strong><span style="font-family: ?hu)?>安装路径下(一般在Q?/span>"ruby"lib"ruby"gems"1.8"gems"firewatir-1.1<span style="font-family: ?hu)?>Q,q入</span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">unittests</span></strong><span style="font-family: ?hu)?>文g夹,<strong>输入命o(h)Q?/strong></span><strong><span style="font-size: 10pt; color: #202020; font-family: Verdana">ruby mozilla_all_tests.rb</span></strong><span style="font-family: ?hu)?>Q如果可以正执行程序,说明安装正确没有问题Q到此可以开始自动化试开发的旅程?jin)?/span>^_^<span style="font-family: ?hu)?>?br /> <br /> </span></p> <img src ="http://www.tkk7.com/lijun_li/aggbug/296332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/lijun_li/" target="_blank">lijun</a> 2009-09-24 18:59 <a href="http://www.tkk7.com/lijun_li/archive/2009/09/24/296332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://vvww-3499.com" target="_blank">Ʒѹһ </a>| <a href="http://074g8.com" target="_blank">91Ƶ91</a>| <a href="http://yunyitai.com" target="_blank">žAV뾫ƷëƬ</a>| <a href="http://fzgjw.com" target="_blank">һԿĿ</a>| <a href="http://cnpc1002.com" target="_blank">Ƶ</a>| <a href="http://yyfass.com" target="_blank"> պ ɫ ͼվ</a>| <a href="http://linmh.com" target="_blank">JLZZJLZZ</a>| <a href="http://222mp3.com" target="_blank">޲Ƶ</a>| <a href="http://misiranim.com" target="_blank">avպר߹ۿ</a>| <a href="http://xjscr.com" target="_blank">޳avӰԺ</a>| <a href="http://6969aaa.com" target="_blank">ӰƵѹۿ</a>| <a href="http://xyjxnhcl.com" target="_blank">AAAձ߲ѹۿ</a>| <a href="http://kimheezk.com" target="_blank">һ岻</a>| <a href="http://9akk.com" target="_blank">պĻ߲</a>| <a href="http://128313.com" target="_blank">avŷǮ</a>| <a href="http://koukoub.com" target="_blank">ĻƵ</a>| <a href="http://44g8.com" target="_blank">ձVAҹߵӰ</a>| <a href="http://0967c.com" target="_blank">޿һ24޿</a>| <a href="http://58f8.com" target="_blank">ŮڵƵ</a>| <a href="http://286513.com" target="_blank">Ʒһ</a>| <a href="http://b7277.com" target="_blank">ҳƵ߲</a>| <a href="http://zbr555sina.com" target="_blank">þ99ڹ</a>| <a href="http://zz1220.com" target="_blank">޾ƷywӰԺ</a>| <a href="http://hztkw.com" target="_blank">AVַ߹ۿ</a>| <a href="http://222222se.com" target="_blank"></a>| <a href="http://8v4y.com" target="_blank">˳ˬһ</a>| <a href="http://xiamenwave.com" target="_blank">ഺɫƷ</a>| <a href="http://kkm55.com" target="_blank">VAĻ</a>| <a href="http://988938.com" target="_blank">ӰԺ</a>| <a href="http://928288.com" target="_blank">ĻӰԺַ</a>| <a href="http://28896543.com" target="_blank">Ļȫ</a>| <a href="http://diswooo.com" target="_blank"> ɫһ վ</a>| <a href="http://137499.com" target="_blank">AVӰԺۿ</a>| <a href="http://www-kj5799.com" target="_blank">þAV</a>| <a href="http://18yinren.com" target="_blank">պƷһ</a>| <a href="http://hwafarda.com" target="_blank">СƵ߹ۿ</a>| <a href="http://8v4y.com" target="_blank">ҹƵѹۿƵ</a>| <a href="http://352362.com" target="_blank">51ƵѹۿƵ</a>| <a href="http://wwwbu610.com" target="_blank">պƷרҹ </a>| <a href="http://www79909c.com" target="_blank">زѿ</a>| <a href="http://www33399.com" target="_blank">99߹ۿƵ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>