Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将jQuery转换为Watir_Ruby_Watir - Fatal编程技术网

Ruby 将jQuery转换为Watir

Ruby 将jQuery转换为Watir,ruby,watir,Ruby,Watir,我完全可能遗漏了一些基本的东西,但这对我来说是一个新领域,我可以使用一些指针。我开始使用Ruby和Watir来驱动/测试一个完全由AJAX构建的web应用程序。许多项没有显式的类/ID,开发团队当然使用jQuery来访问它们。我正在寻找一种将jQuery转换为Watir的方法,以使用/修改/检查相同对象的值 例如,他们使用此选项查看数据网格的第五列中是否有值: $("div.dataTable table tbody tr").has("td:eq(4):not(:empty)").length

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

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

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

我该怎么做类似的事情呢

您可以使用以下方法在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

您可以将其全部写为一行,但为了便于阅读,我在这里将其拆分。

您可以使用以下方法在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
您可以将其全部写成一行,但为了便于阅读,我在这里将其拆分。

您也可以使用。它是一个小的RubyGem,与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工作。)

你也可以使用。它是一个小的RubyGem,与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工作。)

谢谢,我想这正是我想要做的;我要试一试。我一直在寻找所有的物体,但是没有找到trs。是否有更好的(用于浏览/搜索)资源?由于类的生成方式是动态的,因此没有关于所有可能对象的良好文档。但是Watir支持所有标准元素,可以作为单个元素(例如“tr”)或集合(“trs”)进行访问。如果您对任何标记类型使用相同的格式(即标记名是否为复数),它应该可以工作。一旦你习惯了RDOC,它就会很有用——或者。明白了。它看起来像这个表{trs.count{tr | tr.td(:index,4).text!='}argh。我被打断了。无论如何它看起来像是表{trs.count{tr{tr}tr.td(:index,4)。text!=''}被转换成使用{:index=>4,:tag_name=>“td”}抛出Watir::Exception::UnknownObjectException。@JustinKo:实际上,Watir支持的所有元素都有一个表:但它已经有一年了。更新即将到来。谢谢,我想这正是我想要做的;我要试一试。我一直在寻找所有的物体,但是没有找到trs。是否有更好的(用于浏览/搜索)资源?由于类的生成方式是动态的,因此没有关于所有可能对象的良好文档。但是Watir支持所有标准元素,可以作为单个元素(例如“tr”)或集合(“trs”)进行访问。如果您对任何标记类型使用相同的格式(即标记名是否为复数),它应该可以工作。一旦你习惯了RDOC,它就会很有用——或者。明白了。它看起来像这个表{trs.count{tr | tr.td(:index,4).text!='}argh。我被打断了。无论如何它看起来像是表{trs.count{tr{tr}tr.td(:index,4)。text!=''}被转换成使用{:index=>4,:tag_name=>“td”}抛出Watir::Exception::UnknownObjectException。@JustinKo:实际上,Watir支持的所有元素都有一个表:但它已经有一年了。更新即将到来。