我的标记看起来像:
<div class="alert">
<details>
<summary>
This question is currently shared across
<strong>2 surveys.</strong>
Changes made to this question will be applied everywhere it's shared.
</summary>
<ol>
<li><a href="/admin/surveys/1/questions"><i class="icon-share"></i> Test Survey <span class="badge">source</span></a> </li>
<li><a href="/admin/surveys/2/questions"><i class="icon-share"></i> New Survey 2014-11-11 22:14:47</a></li>
</ol>
</details>
</div>
如何说服水豚点击<details>
?
答案 0 :(得分:2)
尝试使用find('.alert > details').click
使用上面的Capybara会尝试在div.alert中找到一个details元素(Capybara使用CSS作为默认选择器)。您可以将黄瓜步骤定义如下:
When(/^I click on details inside an alert$/) do
find('.alert > details').click
end
答案 1 :(得分:0)
我认为这种解决方案是一种奇怪的方法,但它无论如何都可以提供帮助。
由于您需要JQuery,您必须更改驱动程序:
设定:
的Gemfile: gem&#39; capybara-webkit&#39;
(系统)我在Debian,所以我必须: apt-get install qt4-qmake qt4-default
,在require之后: Capybara.javascript_driver =:webkit
在上下文/ describe中: context&#39; ...&#39;,:js =&gt;是的
现在,这就是解决方案:
visit some_path
page.execute_script("$('#my_detail').attr('open', '')")
expect(find('#my_detail')['open']).to eq('open')
JQuery $(&#39;#my_detail&#39;)。attr(&#39; open&#39;,&#39;&#39;)匹配id = my_detail并添加属性&#39;开放&#39;值为空(它是你点击时会发生什么)。
然后,为了测试它是否真的开放,我做到了期待。
此测试为绿色。如果您评论&#39; page.execute&#39;,则测试将失败。