我有一些代码可以更新一次显示时间轴的哪个部分。因此,如果您正在查看从2013年1月1日到2013年12月31日的时间范围,您可以说我想要一次显示所有12个月,或者我只想要显示6个月(例如)。如果选择后者,则显示Jan - Jun,您必须向右滚动时间轴以查看剩余月份。
我试图用Selenium& amp;水豚。对于每个月,相应的缩写出现在时间轴的顶部(Jan,Feb等)。对于显示所有12个月的情况,我目前有这个......
expected = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
for exp in expected do
assert page.has_content?(exp), "Expected page to have #{exp}, it did not."
end
对于您选择一次只显示6个月的情况,我尝试执行以下操作:
expected = ['Jan','Feb','Mar','Apr','May','Jun']
for exp in expected do
assert page.has_content?(exp), "Expected page to have #{exp}, it did not."
end
not_expected = ['Jul','Aug','Sep','Oct','Nov','Dec']
for exp in not_expected do
assert !page.has_content?(exp), "Expected page NOT to have #{exp}, but it did."
end
问题是not_expected
个月仍然在页面的内容中,它们只是不可见。我研究过使用:visible => true
但是很难弄清楚如何使用它。此外,内容未被设置为不可见...它就在页面之外。有没有办法用Capybara / Selenium进行测试?
答案 0 :(得分:0)
您是否尝试过使用find
命令而不是page.has_content
?
你应该可以传入你已经使用的缩写,而且Capybara应该(默认情况下)忽略它看不到的任何东西(例如,如果它不在屏幕上)。
还有一个设置可用于确保Capybara忽略隐藏元素,但我相信这是默认行为:
Capybara.ignore_hidden_elements = true
顺便说一句,我避免在测试中的任何地方使用!page.has_content?
,因为Capybara会在返回任何内容之前等待您的默认超时。有一个page.has_no_content?
方法可以做到这一点,并且只要内容不存在就会立即返回,从而为您节省宝贵的时间。