回答
忽视其在第一时间标签,或从您的开发者(或自己)请求独特属性的非的Watir的问题,你可以随时通过它的父元素访问一个元素,或指数。
例如: 文本
@browser.div(:name => "content").span(:index => 1)
#this is the first span element inside this div
你可以通过你到达子跨度元素之前需然而,许多独特的元素工作,无需使用XPath。当然,您只需要一个独特的父元素即可访问该特定的子元素,并且可以从该元素处理到该子元素。
div(:how => what).table(:how => what).td(:how => what).span(:how => what).text
又如,假设它是在第n个跨度在页面上: @ browser.span(:指数=>Ñ)
该副指数的方法是非常脆并且容易但是当对页面进行任何更新时都会中断。
如果有文字:
browser.span(:text => "Text")
如果你只知道部分文字,你可以使用正则表达式:
browser.span(:text => /Text/)
基本上有三种方法来解决这一特殊的挑战。泽利科已经解决了基于是什么内元素如已知的文本第一。亚当解决最常见的方式,是什么封闭或含有元素我会解决的第三条道路,这是什么封闭式通过或元素旁边。
如果你有一个已知的元素在你想要的元素之内,那么你可以从那开始,并使用.parent
方法来获得'容器'元素。这也可以用来通过使用.parent来找到一个'兄弟'元素,通过一个公共容器(如表格行)来获得你想要的。第一次使用相当明显,但第二次使用可能更常见,并且在使用表格时非常有用。
例如假设你有其中一列就是唯一的零件编号多行数据的表,另一列已经“加入购物车”的链接。现在,如果你想要一个特定部分添加到您的购物车,你可以使用索引使用这样的基于它是与特定文本第五链接代码与文本“添加到购物车”组合拳
browser.link(:text => 'add to cart', :index => 4).click
但这是脆弱,因为一旦业绩变动,(它可以发生很多与现场数据)的部分不再是一个5号在该表中,您的测试将打破。您需要一些验证,才能找到正确的部分,而不是该行的其他部分。然而,在的Watir你可以做这样的事情:
browser.cell(:text => 'Part no. 123-45').parent.link(:text => 'add to cart').click
表格单元格的情况下,小区的家长通常会是一个表行,因此用简单的英语本翻译为“发现细胞'零件编号123-45',然后在同一行中找到并点击'添加到购物车'链接。 (尽管我猜你只是通过阅读代码才能明白这一点)。
您可以使用它获取任何“兄弟”或甚至只是“父”本身,其中在对象旁边或内部有一些唯一元素你需要与之互动。
你或许可以做类似于使用XPath的东西,但在五周之后阅读代码的时候运气好作出任何意义了它。这是我非常喜欢Watir和Watir-Webdriver与Selenium的原因之一。
内的跨度二审我从来不敢想象的那么多回答一个简单的问题。 –
一个简单的问题,但以非常规的形式呈现,没有任何上下文或周围的HTML。因此,各种答案远不及问题的一般性。毫无疑问,我正在解决一个更狭窄的利基..嗯,一个有用的编辑浮现在脑海中。 –
@DaveMcNulla,我的修改后的答案现在把其他答案放在更多的背景下吗? –
- 1. 如何使用Watir访问另一个元素之后的元素?
- 2. 如何访问PageObject元素的Watir属性?
- 3. 如何使用watir-webdriver访问DOM中的JSON元素?
- 4. Watir-webdriver如何不首先访问LAST匹配元素?
- 5. 访问元素的子元素
- 6. 访问元素
- 7. 访问元素?
- 8. 访问元素
- 9. 访问元素
- 10. 访问元素
- 11. 访问元素
- 12. 访问元素
- 13. 访问点击的元素
- 14. 访问treeset中的元素
- 15. 访问IBOutletCollection中的元素
- 16. 访问HostListener的HTML元素
- 17. 访问HashMap的元素
- 18. 访问子元素(jQuery的)
- 19. colorbox内的访问元素
- 20. 访问元素的onclick
- 21. 访问元素的n-gram
- 22. 的JavaScript访问元素
- 23. 如何使用Watir访问具有自定义属性的元素?
- 24. 如何使用Watir访问具有相同属性的第二个元素?
- 25. Watir ::直接访问对象与使用集合时的元素ole_object值
- 26. 如何使用watir和firefox访问未识别的嵌套菜单元素?
- 27. Watir在访问网页后试图找到任何元素时超时
- 28. 怪异的a:IE元素在LI元素中的访问行为
- 29. 的Watir-的webdriver:访问使用索引
- 30. 的Watir没有看到元素与Phantomjs
注意,这仅仅是第一区间,如果你正在使用旧版本的Watir的其中使用一个基于索引,用的Watir 2.x或的Watir,其中的webdriver使用从零开始的索引(像Ruby)':指数=> 1'将在div –