水豚:有机会把 Capybara::Node::Element 传给 jquery 吗?
Capybara: is there opportunity to pass Capybara::Node::Element to jquery?
我尝试编写可以普遍使用的代码,而页面中有很多具有相同 selectOR 和值的元素。有时我需要对 Capybara 不知道的特定元素进行处理 - 添加或删除 class、更改背景颜色。
当我需要 select 来自许多元素的特定元素时,在 .all[=38 的帮助下搜索后,我得到一个 Capybara::Node::Element 的数组=],例如。是否有机会以 jQ 可理解的格式将此类元素之一传递给 jQuery?
像我传递一样简单地传递它css select或者给出错误
unknown error: Syntax error, unrecognized expression: #<Capybara::Node::Element:0x00000003e60d90>
我知道的备选方案是
:nth-of-type() /我试过了,但它不能稳定工作我,仍然不能完全理解为什么它只在大多数情况下有效/
直接进入 jQuery:将所有相似的 selector 收集到一个数组中,对其进行切片并制作我需要的所有东西。可以接受,但有一个缺点:在 Capybara 中提供了更多脚本。
是否有机会在 .all 的帮助下直接将搜索结果传递给 jQuery 或任何其他备选方案?
P.S。简要地继续,问题是得到一个 Capybara 和 jQuery 都能理解的结果。现在,当我遍历类似的元素时,我有一个全局计数器,其中包含许多必要的元素。但是我必须根据它是否会被 Capybara 使用(这里可以是 Capybara::Node::Element)或 jscripts(这里我必须在初始 selector 上添加切片)来提供不同的代码。
Capybara 本身无法将元素传递回浏览器以执行脚本(由于驱动程序之间的兼容性),但是一些驱动程序支持它。如果在水豚中使用 selenium 驱动程序,传递的元素在参数 'array' 中可用,你可以这样做
el = page.find(:css, '#my_id')
page.driver.browser.execute_script("$(arguments[0]).addClass('something');", el.native)
我尝试编写可以普遍使用的代码,而页面中有很多具有相同 selectOR 和值的元素。有时我需要对 Capybara 不知道的特定元素进行处理 - 添加或删除 class、更改背景颜色。
当我需要 select 来自许多元素的特定元素时,在 .all[=38 的帮助下搜索后,我得到一个 Capybara::Node::Element 的数组=],例如。是否有机会以 jQ 可理解的格式将此类元素之一传递给 jQuery?
像我传递一样简单地传递它css select或者给出错误
unknown error: Syntax error, unrecognized expression: #<Capybara::Node::Element:0x00000003e60d90>
我知道的备选方案是
:nth-of-type() /我试过了,但它不能稳定工作我,仍然不能完全理解为什么它只在大多数情况下有效/
直接进入 jQuery:将所有相似的 selector 收集到一个数组中,对其进行切片并制作我需要的所有东西。可以接受,但有一个缺点:在 Capybara 中提供了更多脚本。
是否有机会在 .all 的帮助下直接将搜索结果传递给 jQuery 或任何其他备选方案?
P.S。简要地继续,问题是得到一个 Capybara 和 jQuery 都能理解的结果。现在,当我遍历类似的元素时,我有一个全局计数器,其中包含许多必要的元素。但是我必须根据它是否会被 Capybara 使用(这里可以是 Capybara::Node::Element)或 jscripts(这里我必须在初始 selector 上添加切片)来提供不同的代码。
Capybara 本身无法将元素传递回浏览器以执行脚本(由于驱动程序之间的兼容性),但是一些驱动程序支持它。如果在水豚中使用 selenium 驱动程序,传递的元素在参数 'array' 中可用,你可以这样做
el = page.find(:css, '#my_id') page.driver.browser.execute_script("$(arguments[0]).addClass('something');", el.native)