将jQuery转换为Watir

时间:2012-12-06 18:38:46

标签: ruby watir

我完全有可能错过一些基本的东西,但这对我来说是一个新的领域,我可以使用一些指针。我开始使用Ruby和Watir来驱动/测试所有AJAX构建的Web应用程序。许多项目没有明确的类/ ID,开发团队当然使用jQuery来获取它们。我正在寻找一种方法将他们的jQuery转换为Watir来使用/修改/检查相同对象的值。

例如,他们使用它来查看数据网格的第五列中是否有值:

$("div.dataTable table tbody tr").has("td:eq(4):not(:empty)").length > 0

我将如何做类似的事情?

2 个答案:

答案 0 :(得分:4)

你可以使用以下方法在Watir进行相同的检查:

#Get the rows of the table (assuming there is just one dataTable)
table_trs = browser.div(:class, 'dataTable').table.tbody.trs

#Find how many rows have data in the 5th cell
#  Note that both jQuery and Watir are 0-based index (ie 4 means 5th cell)
rows_with_data = table_trs.count{ |tr| tr.td(:index, 4).text != '' }

#Do your comparison
rows_with_data > 0

你可以把它全部写成一行,但为了便于阅读,我把它分解了。

答案 1 :(得分:0)

您也可以使用Pincers。它是一个小的ruby gem,就像Watir一样,但是在Webdriver之上提供了类似于jQuery的API。

示例:

require('selenium-webdriver')
require('pincers')
driver = Selenium::WebDriver.for :firefox
pincers = Pincers.for_webdriver driver
pincers.goto 'www.somesite.com'
pincers.css('a#link-id').click

(披露:我在Platanus工作。)