watir代码移植至watir-webdriver代码时需要注意的一些事项
2011-07-03 23:21
661 查看
最近在把watir代码移植到watir-webdriver。移植过程中发现了,也总结了一些经验,志之并分享。
解决方法:可以在操作元素前调用element.waituntilpresent方法,该方法保证element可见(visible)和可以操作(enable)。
而在watir中,collection元素索引是从1开始的,比如
解决方法:尽量少用字面量来直接索引collection元素,比如
这样如果移植到web driver的话只需要修改FIRSTCOLUMN和FIRSTROW这2个常量就可以实现全局替换了
解决方法: 不再使用row_count等方法,或者自定义这些方法并动态加载进去,例如
由于移植只进行了部分,所以更多经验有得补充。
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
由于移植只进行了部分,所以更多经验有得补充。
相关文章推荐
- 【web】PHP网页调用Matlab代码的实现以及一些需要注意的bug~
- Selenium WebDriver 2.0 升级到3.0 需要注意的事项 (2)
- selenium2.0&WebDriver学习系列(一些需要注意的知识点)
- 将32位代码向64位平台移植的注意事项
- Android WebView 上传图片注意事项和完整代码参考
- idea创建maven web项目需要注意的一些细节
- 抓包需要注意的一些事项
- Android7.0适配所需要注意的一些事项
- 搭建Spring4.1与Spring4.2 websock+stomp+activeMQ需要注意事项:spring4不同版本websocket差异
- 关于将java测试代码移植到jmeter和loadrunner需要注意的地方
- 编写Web前端代码的注意事项
- 新建java工程/web工程需要注意的事项
- 在C语言中关于scanf()函数需要注意的一些事项
- 将32位代码向64位平台移植的注意事项
- Java Web项目从Windows移植到Linux注意事项
- Android基础入门教程——7.5.3 Android 4.4后WebView的一些注意事项
- 将 Java Web 应用从 Windows 移植到 AIX 时需要注意的问题
- Socket程序从Windows移植到Linux下的一些注意事项
- 抓包需要注意的一些事项
- 关于web前端的一些注意事项