如何用Watir方法编写指定XPath表达式?
能否用Watir链式调用生成指定XPath?
当然可以用Watir的链式调用来实现这个定位逻辑,完全不用直接写XPath。我们可以把原XPath的定位逻辑拆解成Watir的方法调用,完美复刻效果:
原XPath的定位逻辑:找到包含文本“Address Type”、class为fieldTitle-small required z-label的span元素,取它的父元素,再找父元素后面相邻的div,最后定位该div下的input。
对应的Watir链式调用代码:
browser.span(class: 'fieldTitle-small required z-label', text: /Address Type/).parent.following_sibling(tag_name: 'div').input
拆解这段代码和原XPath的对应关系:
browser.span(class: 'fieldTitle-small required z-label', text: /Address Type/):对应XPath中的//span[@class='fieldTitle-small required z-label'][contains(.,'Address Type')],用正则匹配文本实现contains的模糊匹配效果.parent:对应XPath里的/../,获取span元素的父节点.following_sibling(tag_name: 'div'):对应/following-sibling::div,获取父节点的下一个相邻div元素.input:对应//input,定位目标div下的input元素
这种链式调用的写法比直接写XPath可读性更高,也更符合Watir的设计思路。
内容的提问来源于stack exchange,提问作者Rajagopalan
相关产品推荐
相关产品推荐

