RSpec 水豚定位器未找到 link 文本
RSpec Capybara locator not finding link text
我有一个带有简单 <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
所以我们肯定知道页面上有 link 和 Upload Video
文本。
但是当我这样做的时候
Capybara.current_session.has_link?('Upload Video')
false
我得到 false
。从 docs 看来 locator
可以是元素文本。那么为什么这不起作用?
这个替代方案似乎可行:
Capybara.current_session.has_selector?(:css, 'a.primary', text: 'Upload Video')
HTML 将一个 a
元素定义为一个 link 当它有一个 'href' 属性时,没有一个它被认为是 [=21= 的占位符] - https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element。出于这个原因,Capybara 默认要求在查找 link 时存在 href
属性。我猜你的 "link" 实际上没有 href
属性。您可以通过将 href: nil
作为选项
传递给水豚找到它
Capybara.current_session.has_link?('Upload Video', href: nil)
我有一个带有简单 <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
所以我们肯定知道页面上有 link 和 Upload Video
文本。
但是当我这样做的时候
Capybara.current_session.has_link?('Upload Video')
false
我得到 false
。从 docs 看来 locator
可以是元素文本。那么为什么这不起作用?
这个替代方案似乎可行:
Capybara.current_session.has_selector?(:css, 'a.primary', text: 'Upload Video')
HTML 将一个 a
元素定义为一个 link 当它有一个 'href' 属性时,没有一个它被认为是 [=21= 的占位符] - https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element。出于这个原因,Capybara 默认要求在查找 link 时存在 href
属性。我猜你的 "link" 实际上没有 href
属性。您可以通过将 href: nil
作为选项
Capybara.current_session.has_link?('Upload Video', href: nil)