您的位置:首页 > 编程语言

watir代码移植至watir-webdriver代码时需要注意的一些事项

2011-07-03 23:21 661 查看
最近在把watir代码移植到watir-webdriver。移植过程中发现了,也总结了一些经验,志之并分享。

webdriver的wait方法。

watir的wait方法是稳定且smart的,基本上调用browser.wait方法是可以保证浏览器渲染并加载dom完毕的。但是webdriver的wait方法却不是这样。watir-webdriver的wait方法仅仅是等待浏览器状态栏出现compelete状态。在有些情况下,出现compelete状态后,浏览器还是没有加载完成的,这就导致页面上一些对象无法定位。

解决方法:可以在操作元素前调用element.waituntilpresent方法,该方法保证element可见(visible)和可以操作(enable)。

index base 0

watir webdriver中,collection元素的索引是从0开始的,比如

browser.table(:id => mytable).rows[0] #代表选取table的第1行

而在watir中,collection元素索引是从1开始的,比如

browser.divs[1] #代码选取页面上第1个div

解决方法:尽量少用字面量来直接索引collection元素,比如
FIRST_COLUMN = FIRST_ROW = 1
browser.table(:id, 'tb1')[FIRST_ROW][FIRST_COLUMN]

这样如果移植到web driver的话只需要修改FIRSTCOLUMN和FIRSTROW这2个常量就可以实现全局替换了

某些方法不再支持

watir webdriver不再支持例如row_count, getAllContents等方法。

解决方法: 不再使用row_count等方法,或者自定义这些方法并动态加载进去,例如
Watir::RowContainer.module_eval do
def row_count
rows.length
end
end

由于移植只进行了部分,所以更多经验有得补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: