我的网页上有一个简单的<a>
标记,文字为Upload Video
。我在我的rspec测试中设置了一个断点并执行此操作:
Capybara.current_session.find('.primary')
#<Capybara::Node::Element tag="a" path="/html/body/div[3]/div[1]/div[2]/div/div[1]/div[4]/label/a">
Capybara.current_session.find('.primary').text
"Upload Video"
Capybara.current_session.find('.primary').visible?
true
因此,我们确信网页上有Upload Video
文字的链接。
但是当我做的时候
Capybara.current_session.has_link?('Upload Video')
false
我得到false
。 docs似乎locator
可以是元素文本。那么为什么这不起作用呢?
这种替代方案似乎有效:
Capybara.current_session.has_selector?(:css, 'a.primary', text: 'Upload Video')
答案 0 :(得分:2)
HTML将a
元素定义为链接,当它具有&#39; href&#39;属性,没有它,它被视为链接的占位符 - https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element。因此,Capybara在查找链接时默认需要href
属性。我猜猜你的&#34;链接&#34;实际上没有href
属性。您可以通过传递href: nil
作为选项让Capybara找到它
Capybara.current_session.has_link?('Upload Video', href: nil)