watir是如何定位元素的
最近将watir更新到了1.9.1,忽然发现以前承诺的带大家读waitr源码的”夸夸其谈”还尚未实现,甚表歉意,暂且先说明一下watir定位(locate)元素的基本原来,聊以将功补过。
以下说明均以watir 1.9.1为例。在这里建议大家最好将watir升级到最新版本,因为最新版本增加了对IE9的支持,尽管支持的不是很全面,但聊胜于无,优势总是有的。
在watir的源码中找到locator.rb文件。该文件一般位于your_disk:\Ruby192\lib\ruby\gems\1.9.1\gems\watir-1.9.1\lib\watir\目录下。
locator文件定义了1个Locator类,这个类是定位对象的1个helper类。该类中如如下2个方法:
normalize_specifiers!: 该方法的作用是构造specifiers,而specifiers正是定位对象所要用到的”标识”。 matchwithspecifiers?: 该方法的作用是判断元素是否符合specifiers所定义的特征。如果符合,那么这个元素肯定就是我们要找的目标元素了。
简单看一下这2个方法的源码
首先简单介绍一下specifiers。specifiers看上去很陌生,但是在我们的watir脚本中,specifiers是无处不在的。考虑下面的代码:
ie.div(:class => 'red', :index => 3)