我对此有点新意,但我正试图让rspec点击链接。 我用索引替换了索引寻呼机上的“显示”链接,该链接是项目的名称。
即。我的观点有这个
<td><%= link_to task.name, task_path(task) %></td>
我的rspec文件有一个参考
find(:xpath, "(//a[text()= 'Show'])[1]").click
我希望变成像
这样的东西 find(:xpath, "(//a[text()= @task1.name])[1]").click
那应该在列表中选择正确的任务,这样我就可以用
来完成它 it { should have_content(@client.name) }
it { should have_content(@task1.name) }
it { should have_content(@task1.description) }
不幸的是,我无法弄清楚如何将@ task.name放入其中,以免它破坏。
有什么想法吗?
更新
Failure/Error: find(:xpath, "(//a[text()= @task1.name])[1]").click
Capybara::ElementNotFound:
Unable to find xpath "(//a[text()= @task1.name])[1]"
# ./spec/requests/task_pages_spec.rb:123:in `block (4 levels) in <top (required)>'
答案 0 :(得分:0)
请以这种方式尝试xpath
,错过了Ruby的字符串插值:
find(:xpath, "//a[text()= \"#{@task1.name}\"][1]").click
我试图制作一个类似的例子: -
require 'nokogiri'
doc = Nokogiri::HTML::Document.parse <<-eotl
<div>
<p>foo</p>
<p>foo</p>
<p>bar</p>
</div>
eotl
doc.class # => Nokogiri::HTML::Document
class Person
attr_accessor :name
end
ram = Person.new
ram.name="foo"
ram.name # => "foo"
doc.search("//div/p[text()= \"#{ram.name}\"]").to_a.size
# => 2
答案 1 :(得分:0)
这比我想象的容易得多....
click_link @task1.name
想想我可能需要在角落里哭泣,因为他花了好几个小时试图解决这个问题......