今天在wiki上看到了Watir-Webdriver与watir1.x的差异,估计不少同学会用到,顺手翻译一下,抛砖引玉,谬误勿怪。
元素定位
-
索引从0开始,而不是从1开始;举例来说,在watir webdriver里table.rows[0]代表的是第一行;
-
支持所有的HTML标签,当然包括HTML5了;
-
所有的元素均支持hash定位和多重定位;
-
集合类的方法支持使用定位参数了,比如
browser.divs(:class => "foo") #=> #<Watir::DivCollection>
-
如果没有参数的话则返回第一个匹配元素(注意,是html tag的匹配)
browser.div #=> the first div on the page
-
不再支持使用单个参数来定位元素
browser.div("some_id") #不再支持default how的情况了
-
不再支持使用第3个参数value来定位checkbox/radio元素
checkbox(:class => "foo", :value => "bar") # 现在应该这样用
-
elementbyxpath()方法总是返回Watir元素了,不再返回OLE元素;
-
elementsbyxpath()方法返回空的array,如果没有元素匹配到的话(不再返回nil);
-
How参数必须是符号型
browser.meta(:http_equiv, 'foo') instead of browser.meta('http-equiv', 'foo')
-
定位元素时,:url不再是:href的别名;
废弃的方法
-
改进的Table类API;这里面改了不少,不一一写出来了;
-
移除了一些TextField类的方法
TextField#verifycontains TextField#dragcontentsto TextField#requirestyping TextField#abhors_typing
-
一些IE浏览器特有的方法也移除了:(当然,一般都是Browser这个类的)
Browser#document Browser.{speed,speed=} Browser.{attachtimeout,attachtimeout=} Browser.visible Browser.each Browser#{visible,visible=} Browser#wait Browser#bringtofront
-
驼峰型的方法被移除了,当然这里面有一些方法在watir1.6中就移除了:
Container#checkBox Image#hasLoaded? Image#fileSize Image#fileCreatedDate {Radio,Checkbox}#isSet? {Radio,Checkbox}#getState SelectList#getSelectedItems SelectList#getAllContents SelectList#clearSelection TextField#requires_typing TextField#getContents Textfield#dragContentsTo
-
废弃了SelectList#type #=> "select-one" or "select-multiple"方法,现在用SelectList#multiple
局限性
-
不再支持attach一个浏览器的实例;新的 window switching API基本可以替代以前的attach()方法使用;
-
不再支持操作hidden的元素了;
-
Webdriver只支持点击可见的元素;
其他
-
DOM元素的相等比较现在跟Ruby语言中是一致的了:
Element#== and Element#eql?