一、创建对象:

         一个区块是否要设置为集合或者submodel都不是一定,这个要看个人的需求,在一个页面上,怎么好找怎么设,千万不要定向思维了。

         有时候我们在创建对象是往往建到控件了的时候发现根节点建错了,全部删了又很费时,那怎么办?

可以将这个页面加入到其他应用下:

然后导出XML

导入到所要的页面下

把代码复制进去,不需要输入名字和说明。Automan会自动生成相应的page。

 对象创建好,怎么知道自己建的对不对呢?

 Automan console个人觉得还是蛮好用的。最好用的个人感觉是show方法,写法如下:

show(find(/taobao/,"#Password_Edit_NoIE"))

 #你想怎么show就怎么show。

 还有一个是类似于list页面下面有很tbody,tbody下面还有很多div,再下面还有很多tr的这种,并且还有影藏的,界面上你看不到的时候,,可以用下面这个方法

irb(main):029:0> HtmlHelper.generate_full_path ele[1]

=> ">BODY:eq(0)>DIV:eq(0)>DIV:eq(1)>DIV:eq(0)>DIV:eq(0)>DIV:eq(1)>DIV:eq(0)>DIV:

eq(2)>FORM:eq(0)>DIV:eq(3)>BUTTON:eq(0)"

#从body往下,找第一个叫div的节点。eq(0)代表第一个,eq(1)代表第二个

 二、编写脚本

 有些脚本中的代码规定和excel里面的一些潜规则~~

1、

 第一个是应用的名字,第二个是page名字,automan在创建对象的时候会自动生成

 2、

Excel里面 用例ID(目前请将用例ID统一为100000),但是在excel里面多个用例的ID还是不要重复的好,可以写成100001,100002之类的。

 3、

一般新同学都没有SVN权限,需要向SCM申请

注:新建的文件夹需要先提交文件夹后才能提交里面的脚本。直接提交脚本是提交不了的。

运行脚本是各种常见报错~~

1、

OLE::UnknownFormatError (OLE::UnknownFormatError)

data_sheet.rb:66:in `create_many': undefined method `size' for nil:NilClass (NoMethodError)

以上的都是excel表解析的一些问题。

方法1. 手动将excel格式先转化为电子表格形式,然后再将电子表格形式转化为93版的exce格式

方法2. 在代码里面添加一句代码,如下图所示:

 

2、

在我们做作业1的时候,有加入一个去除勾选安全登入的操作,是因为:

目前automan不支持 以 安全登入,所以要添加一个去掉安全登入的操作

 3、

Error: uninitialized constant TestExample::ShareLogin (NameError).At:

将login的方法放进share里面。

代码里面加入:

module Share class 

ShareLogin

 4、

Error: uninitialized constant TestExample::BUY (NameError)

说明对象库中没有这个空间

 5、

undefined method `item' for #<Yanyue::ListBoughtItems

说明对象库中没有创建“item”这个对象

 6、

代码的含义

 

圈起来的是创建的对象,第一个是submodel,最后一个是selector ,集合要加上“[]”,来表明是哪一个。

7、

数据库校验:

代码开头要引用以后的db方法,在代码中加入:

require File.dirname(__FILE__)+"/../../../share/db"

需要引用下db的方法,value=Sharding.db(id)[:auction_auctions].filter(:auction_id=>id).first.auction_status     

8、

 wrong num of argument(21 for 5)

Excel与脚本中的参数个数错误

9、

in `execute': Can't connect to dev_db2_icuser14, (DBModel::DmError)

数据库连不上

 

编写代码的一些技巧和方法~~

1、

传入多个参数分离开的方法:

Error: can't convert Array into Integer (TypeError)

2、

循环操作的方法:

 names=itemname.split(";") 

     names.each{|name|

     apage.goods_on_sale.item_lists[name].chk_selector[0].set

     }  #循环的方法

3、

IEModel.get_

Automan console 里面查找各种方法

4、

判断控件是否存在有两个方法:empty和exist 

obj=apage.sale_list_table.goods_records[tmp_goodsname]

assert_false(obj.exist?)

只有字符串可以用include,boolean型的是不能include

5、

IE操作的一些方法:

在当前浏览器,打开新的url,可以用start方法,

ie = IEModel.start(url1)

不过这个方法都会重新开一个IE,这样有可能会开很多IE。这时候就可以用ie.goto,但是这个是需要由原来的IE为基础的,所以在goto之前要定义一个IE。

ie.goto(url2)

我们在goto之前需要定义一个ie时,往往在我们操作到最后一页页面时然后下一个用例还在这个页面继续操作,所以我们可以用last_ie这个方法。这个具体也要看校验是在什么页面进行的,如果需要在其他页面的话就可以用goto的方法。 (在写脚本的时候,Automan里面写到的ie.get_last_ie,这个方法目前是没有的。)

  ie=IEModel.last_ie

last_ie 会返回用户start或attach的最后一个ie。

当遇到有延迟的情况,可以对页面进行刷新,用ie.refresh,但是有页面有refresh的时候一定要cast下页面,要不然会找不到这个页面。

  ie.refresh

有时候校验几个用例每次都要登入,下面是只登入一次的方法:

# 在运行excel里的delete_sql和init_sql后运行,一个在运行excel里的class只运行一次

def class_initialize

#进行login等只会执行一次的操作,这里面可以放用例中重复的

操作。

End

在所有都运行完以后要关闭所有

def class_cleanup

#关闭所有的IE,如果不想关闭所有的,可以就close_ies

IEUtil.close_all_ies

End

       要更好的运用automan,发挥自动化的功能,还需要多体验,多实践。