当前位置: 代码迷 >> Web前端 >> watir代码移栽至watir-webdriver代码时需要注意的一些事项
  详细解决方案

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

热度:184   发布时间:2012-07-30 16:19:05.0
watir代码移植至watir-webdriver代码时需要注意的一些事项
watir代码移植至watir-webdriver代码时需要注意的一些事项

最近在把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

  相关解决方案