水豚:click_button 没有文本或 ID?
Capybara: click_button with no text or id?
这里是 html 代码:
<button type="button" class="icl-Button--transparent icl-Button--sm ia-AddCoverLetter-button"><span class="icl-ButtonIcon"><svg aria-label="Add cover letter" class="icl-Icon icl-Icon--blue icl-Icon--sm" role="img"><g><path d="M9.75,5.25H8.25v3h-3v1.5h3v3h1.5v-3h3V8.25h-3v-3ZM9,1.5A7.5,7.5,0,1,0,16.5,9,7.5,7.5,0,0,0,9,1.5ZM9,15a6,6,0,1,1,6-6A6,6,0,0,1,9,15Z"></path></g></svg></span>Add cover letter</button>
当水豚没有名称或 ID 时,如何让水豚点击它。我尝试了 click_link('Add cover letter') 但它也没有用。
你应该可以 select 它是 class,你试过了吗?
find('button.ia-AddCoverLetter-button').click
接受的答案可以正常工作,但是如果您想继续使用 click_button
以使您的代码更清晰易读(click_button
而不是 click_link
,因为它是一个按钮而不是 link) 你也可以做
click_button(class: 'ia-AddCoverLetter-button')
或者如果你想指定多个 class 你可以传递一个数组
click_button(class: ['icl-Button--transparent', 'icl-Button--sm', 'ia-AddCoverLetter-button'])
我在寻找一种方法来点击一个基于它的项目时遇到了这个问题aria-label
(因为 OP 尝试这样做但无法开始工作)。
一般来说,现在(自 August 2016 起)可以通过启用水豚匹配 ARIA 标签的选项来完成。在 Rails 系统测试中,这是通过将 Capybara.enable_aria_label = true
添加到 application_system_test_case.rb
:
来实现的
# test/application_system_test_case.rb
require 'test_helper'
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
Capybara.enable_aria_label = true
end
启用该选项后,单击图标 link 像这样(使用 HAML):
= link_to edit_reader_path(reader), 'aria-label' => 'Edit' do
%i.icon-pencil.m-auto.text-primary{'aria-hidden' => 'true'}
...我可以在我的系统测试中写这样的东西:
click_on 'Edit', match: :first
我假设这需要进行调整以适应 OP 的情况,其中 aria-label
位于嵌套在跨度内的 SVG 上,在按钮内,可能是通过查找 SVG 然后找到其父级的parent.
这里是 html 代码:
<button type="button" class="icl-Button--transparent icl-Button--sm ia-AddCoverLetter-button"><span class="icl-ButtonIcon"><svg aria-label="Add cover letter" class="icl-Icon icl-Icon--blue icl-Icon--sm" role="img"><g><path d="M9.75,5.25H8.25v3h-3v1.5h3v3h1.5v-3h3V8.25h-3v-3ZM9,1.5A7.5,7.5,0,1,0,16.5,9,7.5,7.5,0,0,0,9,1.5ZM9,15a6,6,0,1,1,6-6A6,6,0,0,1,9,15Z"></path></g></svg></span>Add cover letter</button>
当水豚没有名称或 ID 时,如何让水豚点击它。我尝试了 click_link('Add cover letter') 但它也没有用。
你应该可以 select 它是 class,你试过了吗?
find('button.ia-AddCoverLetter-button').click
接受的答案可以正常工作,但是如果您想继续使用 click_button
以使您的代码更清晰易读(click_button
而不是 click_link
,因为它是一个按钮而不是 link) 你也可以做
click_button(class: 'ia-AddCoverLetter-button')
或者如果你想指定多个 class 你可以传递一个数组
click_button(class: ['icl-Button--transparent', 'icl-Button--sm', 'ia-AddCoverLetter-button'])
我在寻找一种方法来点击一个基于它的项目时遇到了这个问题aria-label
(因为 OP 尝试这样做但无法开始工作)。
一般来说,现在(自 August 2016 起)可以通过启用水豚匹配 ARIA 标签的选项来完成。在 Rails 系统测试中,这是通过将 Capybara.enable_aria_label = true
添加到 application_system_test_case.rb
:
# test/application_system_test_case.rb
require 'test_helper'
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
Capybara.enable_aria_label = true
end
启用该选项后,单击图标 link 像这样(使用 HAML):
= link_to edit_reader_path(reader), 'aria-label' => 'Edit' do
%i.icon-pencil.m-auto.text-primary{'aria-hidden' => 'true'}
...我可以在我的系统测试中写这样的东西:
click_on 'Edit', match: :first
我假设这需要进行调整以适应 OP 的情况,其中 aria-label
位于嵌套在跨度内的 SVG 上,在按钮内,可能是通过查找 SVG 然后找到其父级的parent.