Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Rspec 在水豚身上发现的链子?_Rspec_Capybara - Fatal编程技术网

Rspec 在水豚身上发现的链子?

Rspec 在水豚身上发现的链子?,rspec,capybara,Rspec,Capybara,我试图在水豚中寻找连锁方法,但运气不太好。我希望第二个查找只在第一个查找的输出中查找文本。但是,第二个查找将搜索整个文档 element = page_foo.find('.bar') element.find('div', :text => "name") => All divs with the text "name" on the page. 下面介绍了使用xpath的解决方案: 但是,我对xpath不太熟悉,希望找到一种解决方法 其他详情: HTML: 我的宝马5系G

我试图在水豚中寻找连锁方法,但运气不太好。我希望第二个查找只在第一个查找的输出中查找文本。但是,第二个查找将搜索整个文档

element = page_foo.find('.bar')
element.find('div', :text => "name")

=> All divs with the text "name" on the page.
下面介绍了使用xpath的解决方案:

但是,我对xpath不太熟悉,希望找到一种解决方法

其他详情:

HTML:


我的宝马5系GRAN TURISMO。
我的宝马5系GRAN TURISMO。
RSPEC:

element = page_foo.find('[data-id="tabMeListProducts"]')
  =>#<Capybara::Element tag="div">
element.find('div', :text => "My BMW 5-SERIES GRAN TURISMO.")
  =>Capybara::Ambiguous: Ambiguous match, found 2 elements matching css "div" with text "My BMW 5-SERIES GRAN TURISMO."
element=page_foo.find(“[data id=“tabMeListProducts”]”)
=>#
element.find('div',:text=>“我的宝马5系GRAN TURISMO。”)
=>Capybara::暧昧:暧昧匹配,找到2个元素匹配css“div”和文本“My BMW 5系列GRAN TURISMO”
从上面的示例可以看出,第二个查找的范围是整个页面,不包含在初始查找传入的元素中


我希望该查找只在变量“element”中包含的div中查找。

我同意@Taryn,您需要在syntex中使用。i、 e

within(".bar")do
     find('div', :text => "name")
end 

我同意@Taryn,你需要在syntex中使用。i、 e

within(".bar")do
     find('div', :text => "name")
end 

我记得嵌套的find调用在Cucumber或Capybara的过去版本中起作用。然而,每一个版本都会发生变化。无论如何,您的示例更容易使用嵌套的CSS表达式处理,而不是依赖于多个查找

例如:

page_foo.find('[data-id="tabMeListProducts"] .title')

如果有多次出现,我将使用
all
而不是
find
,并对集合运行我自己的Ruby检查逻辑

另外,中的
通常作为一种替代方法(无需调用
find
,将其作为一个响应,您可以直接在其旁边添加CSS):

最后,如果您坚持使用嵌套的find调用,请尝试在Capybara文档中提到的相同Ruby行上执行它们:
page.find('#foo').find('.bar')
它可能是延迟获取的,但在Ruby行的末尾激活(通过元编程检查行号)


如果所有这些都失败了,那么打开一个GitHub问题:

我记得在Cucumber或Capybara的过去版本中嵌套的find调用是有效的。然而,每一个版本都会发生变化。无论如何,您的示例更容易使用嵌套的CSS表达式处理,而不是依赖于多个查找

例如:

page_foo.find('[data-id="tabMeListProducts"] .title')

如果有多次出现,我将使用
all
而不是
find
,并对集合运行我自己的Ruby检查逻辑

另外,
中的
通常作为一种替代方法(无需调用
find
,将其作为一个响应,您可以直接在其旁边添加CSS):

最后,如果您坚持使用嵌套的find调用,请尝试在Capybara文档中提到的相同Ruby行上执行它们:
page.find('#foo').find('.bar')
它可能是延迟获取的,但在Ruby行的末尾激活(通过元编程检查行号)


如果所有这些都失败了,那么打开一个GitHub问题:

你能解释一下:你想用你的发现做什么吗?一些样本数据,你期望的结果应该是什么?你得到的结果是什么?还有:你考虑过使用“内部”吗?例如
在find('.bar'){find('div',:text=>“name”)}
你好,塔林,谢谢你的帮助。该问题已根据您的反馈进行更新。请您解释一下:您打算如何处理您的发现?一些样本数据,你期望的结果应该是什么?你得到的结果是什么?还有:你考虑过使用“内部”吗?例如
在find('.bar'){find('div',:text=>“name”)}
你好,塔林,谢谢你的帮助。该问题已根据您的反馈进行了更新。按照我的测试设置方式,我通过了变量“element”,该变量包含要搜索的元素作为参数,并且必须使用该变量执行搜索。有可能做类似的事情吗
在(element)do find('div',:text=>“name”)end中
按照我的测试设置方式,向我传递了变量“element”,该变量包含要作为参数搜索的元素,并且必须使用该变量执行搜索。有可能做类似的事情吗<代码>在(元素)内do find('div',:text=>“name”)end
  element.find('div', :text => "My BMW 5-SERIES GRAN TURISMO.")
end