【问题标题】:Using capybara to select a bootstrap radio button使用 capybara 选择引导单选按钮
【发布时间】:2018-08-19 17:47:21
【问题描述】:

我有一组使用引导程序的单选按钮,并希望使用 Capybara 使用 id 或 value 来选择它们。对于我的 rspec 测试。由于某种原因,它没有看到单选按钮,我想知道是否有人可以看看并提出建议。

我得到的错误是

Capybara::ElementNotFound: 找不到未禁用的可见单选按钮“纸张” 水豚::ElementNotFound: 找不到未禁用的可见单选按钮“#paper”

HTML`

        </label>
        <label for="paper" id="paper" class="btn btn-primary choice col-lg-4 col-md-4">
          <input type="radio" value = "paper" name="rps" id="paper">
          <img class="card-img-top img-fluid image-responsive" src="/img/paper.png" alt="Paper">
          </input>

        </label>
        <label for="scissors" class="btn btn-primary choice col-lg-4 col-md-4">
          <input type="radio" value = "scissors" name="rps" id="scissors">
          <img class="card-img-top img-fluid image-responsive" src="/img/scissors.png" alt="Scissors">
          </input>

        </label>
      </div>`

测试

 feature 'Testing if we divert to /result chosing an option and play' do
  scenario 'Choose option and click play' do
    sign_in_and_play
    click_button('Play')
    choose("#paper")
    # choose("paper")
    expect(page).to have_content("Result displayed here")
  end
end

任何帮助将不胜感激。 谢谢

【问题讨论】:

    标签: html rspec capybara


    【解决方案1】:

    Capybara 告诉您它找不到单选按钮,因为它们实际上在页面上不可见。最有可能的是,如果您检查页面,您会看到引导程序隐藏了实际的单选按钮(可能使用visibility: hidden CSS)并用图像替换它们,因此样式在浏览器中是一致的。一种解决方案是让 Capybara 点击label 而无需专门点击单选按钮:

    choose('scissors', allow_label_click: true)
    

    你也可以通过设置Capybara.automatic_label_click = true默认允许label点击

    注意:您的示例 HTML 是非法的,因为论文 label 和 input 都有 id="paper" - 我假设这类似于“剪刀”选项,其中 id 仅在输入。

    【讨论】:

    • 谢谢。标签不应该有 id,我正在玩弄它来点击它。感谢您指出了这一点。就最初的问题而言,它仍然是一样的,仍然得到同样的错误,告诉我它找不到单选按钮'剪刀'。
    • 它实际上仍在尝试单击他显然为样式隐藏的单选按钮。我尝试给标签一个唯一的 id 并使用 find('#paper_label').click 进行测试,但这也不起作用 Get error: Unable to find visible css "#paper_label" 我尝试过的另一件事是 find('[ for=paper]').click 出现错误:无法找到可见的 css "[for=paper]" 不确定是否还有其他可以尝试的方法
    • @IDurrani 当页面在浏览器中运行时,实际的 HTML 是什么,你的意思是 img 在输入中还是应该关闭输入并且 img 是兄弟姐妹在标签中?
    • 谢谢托马斯。是的,因为我处于早期阶段或所有这一切,我认为这是一个好主意。页面加载后的 HTML 如下。 跨度>
    • 好吧,我刚刚意识到我的一个
      以某种方式被注释掉了。取消注释修复它。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多