你給我們在你的評論中的答案,元素是不可見的。
簡短的回答:find_link(selector, visible: :all).click
由於水豚顯示了documentation:
By default Capybara will only locate visible elements. This is because a real user would not be able to interact with non-visible elements.
只有找到可見元素是水豚的智能設計,它可以避免以爲用戶將能夠找到元素。
的find_link
method documentation發現隱藏的鏈接時,沒有太大的幫助,因爲它只能說明這些選項:wait, href, id, title, alt, class
:
#find_link([locator], options = {}) ⇒ Capybara::Node::Element
但是你看的finding documentation有一個visible
選項:
find_link('Hello', :visible => :all).visible?
find_link(class: ['some_class', 'some_other_class'], :visible => :all).visible?
該選項visible
來自#all
方法,where you can see here。它可以有以下值:
true - only finds visible elements.
false - finds invisible and visible elements.
:all - same as false; finds visible and invisible elements.
:hidden - only finds invisible elements.
:visible - same as true; only finds visible elements.
所以,你的情況,你可以使用visible: false
,如果你真的意味着它被隱藏,或者visible: :all
如果你不關心的知名度。
由於您嘗試點擊的元素沒有內容,它實際上是否具有頁面上的任何尺寸?如果不是,它將被視爲不可見。另外,使用特定的選擇器會讓你的測試變得非常脆弱,至少應該有一個id選擇器是不需要的,因爲另一個仍然應該唯一地標識一個元素,並且你指定的大多數clas可能是不必要的。 –
@ThomasWalpole,據我所知,它應該是'find('#bucket_resources_containers> #user_base_widget> div> div> a')。click',但只找到第一個div元素'#bucket_resources_containers'。 –
@ThomasWalpole該元素不可見。一切工作正常知道。 –