【问题标题】:Select any item from select using Capybara使用 Capybara 从 select 中选择任何项目
【发布时间】:2013-10-04 06:27:07
【问题描述】:

我正在尝试为我正在开发的一个小 Rails 应用程序编写测试。 Users 模型与其他用户具有 has_many through 关系(两种方式),并且用户与分配具有 has_many 关系。在 UI 端,用户可以选择另一个用户来附加新的分配。我希望能够对此进行测试。现在的问题是,我不知道如何使用 Capybara 从我不知道文本的项目列表中进行选择。我写了一个 rake 任务来随机生成我的测试数据库,虽然我可以查看数据库并以这种方式编写我的测试,但它当然会在我重置数据库的第二秒中断。

我只是在测试测试数据库中的分配数量是否改变了 1。我正在将 Rspec 与 Capybara 一起使用。

【问题讨论】:

  • select的出处。之后,您可以轻松编写从select 中选择随机值的代码。

标签: ruby-on-rails tdd capybara


【解决方案1】:

假设<select> 元素的 id 为“foo”。那么以下应该可以工作。

option = first('#foo option').text
select option, from: 'foo'

【讨论】:

    【解决方案2】:

    你可以找到option元素,然后调用select_option就可以了。例如,要选择下拉列表中的第三个元素:

    all('#foo option')[2].select_option
    

    【讨论】:

    • 我使用样本来选择随机选项。 all('#foo option').sample.select_option
    • @VenkateshNannan 你如何处理空白/提示选项? (<option value="">Please select</option>)
    • When(/^I select the first option on dropdown "([^"]*)"$/) do |arg1| select all("##{arg1} option")[1].文本,来自:arg1 结束
    • 谢谢大家,'#foo option'中的#号是什么意思?
    • @BKSpureon 这是一个 CSS 选择器,用于带有 id="foo" 的元素
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多