car*_*day 6 automation automated-tests watir webautomation watir-webdriver
使用Watir,有没有办法访问没有属性的元素?
例如:
<span>Text</span>
Run Code Online (Sandbox Code Playgroud)
我想避免使用xpath,但如果这是唯一的方式很酷.
ada*_*eed 11
不考虑其摆在首位的标签,或从您的开发者(或自己)请求独特属性的非的Watir的问题,你可以随时通过它的父元素,或者通过索引来访问的元素.
例如:文字
@browser.div(:name => "content").span(:index => 1)
#this is the first span element inside this div
Run Code Online (Sandbox Code Playgroud)
在不使用Xpath的情况下,您可以在到达子span元素之前处理所需的许多独特元素.当然,您只需要一个唯一的父元素来访问该特定的子元素,然后从该元素向下工作.
div(:how => what).table(:how => what).td(:how => what).span(:how => what).text
Run Code Online (Sandbox Code Playgroud)
另一个例子,假设它是页面上的第n个跨度:@ browser.span(:index => n)
然而,当对页面进行任何更新时,按索引方法非常脆弱并且容易破坏.
如果有文字:
browser.span(:text => "Text")
Run Code Online (Sandbox Code Playgroud)
如果您只知道部分文本,则可以使用正则表达式:
browser.span(:text => /Text/)
Run Code Online (Sandbox Code Playgroud)
基本上有三种方法可以解决这一特殊挑战.泽利科已经解决了基于第一什么是里面的元素,如已知的文本.亚当解决了最常见的方式,什么是封闭或含有的元素 ,我会解决的第三条道路,这是什么是封闭式的或旁边的元素.
如果你有一个已知的元素在你想要的元素内,那么你可以从那开始并使用该.parent方法来获取'container'元素.这也可以用来查找'兄弟'元素,方法是使用.parent通过公共容器(如表格行)获取所需的元素.第一次使用是相当明显的,但第二次使用可能更常见,在使用表时非常有用.
例如,假设您有一个包含多行数据的表,其中一列是唯一的部件号,另一列是"添加到购物车"链接.现在,如果你想要一个特定部分添加到您的购物车,你可以使用索引,使用这样的基于它是与特定文本第五链接代码文本"添加到购物车"组合拳
browser.link(:text => 'add to cart', :index => 4).click
Run Code Online (Sandbox Code Playgroud)
但是,这是脆的,因为一旦业绩变动,(它可以发生很多与现场数据)的部分不再是一个5号在该表中,您的测试将打破.你需要一些验证,你已经找到了正确的部分,而不是那一行.但是,在watir中,您可以执行以下操作:
browser.cell(:text => 'Part no. 123-45').parent.link(:text => 'add to cart').click
Run Code Online (Sandbox Code Playgroud)
在表格单元格的情况下,单元格的父级通常是一个表格行,因此用简单的英语翻译为"找到包含"部分号123-45"的单元格,然后在同一行中查找并点击"添加到购物车"链接.(虽然我猜你只是通过阅读代码来解决这个问题.)
您可以使用它来获取任何"兄弟"或甚至只是"父"本身,在您需要与之交互的对象旁边或内部有一些独特元素.
你可以做一些类似于Xpath的事情,但是五周之后阅读代码时可以从中获得任何意义.这是我非常喜欢Watir和Watir-Webdriver与Selenium的原因之一.
| 归档时间: |
|
| 查看次数: |
6710 次 |
| 最近记录: |