【问题标题】:Cucumber/Capybara Selecting Button from Specific Class?黄瓜/水豚从特定类中选择按钮?
【发布时间】:2015-12-17 04:19:52
【问题描述】:

所以我遇到了一个问题,我试图点击一个按钮......不幸的是它有相同的文本(IE 页面上有 2 个按钮,它们的文本相同,基本上是一个保存按钮)

让我们假设按钮文本只是“保存”。

我确实注意到他们有不同的课程。

<button data-action="submit" class="btn btn-primary btn-save">Save</button>

而另一个按钮是:

<button name="button" type="submit" class="btn btn-primary set-right">
      <i class="glyphicon glyphicon-floppy-disk"></i> Save
</button>

我知道 glypicon 只是一个图标集....但它们似乎都属于同一类?但是有不同的类名? (对不起,我不熟悉 Rails)

老实说,我选择哪一个并不重要,因为它们都具有相同的功能。我已经看到你可以在哪里使用 xpath?但是我们现在不应该使用css选择器或其他东西吗? (因为那是最新的方式?)我可能错了......

我可以使用类似的东西吗:

find(:xpath, '//button[@class="btn-save"]').click

我试图避免仅使用“rails”的解决方案,因为并非我测试的所有网站都是基于 rails 的。

【问题讨论】:

    标签: cucumber capybara


    【解决方案1】:

    你有多种可能性:

    1) 按

    查找按钮
    find(button.btn.btn-primary.btn-save).click
    

    2) 通过 css 选择器xpath 找到按钮(您可以使用 Google Chrome 复制它们:右键单击 -> 检查 -> 右键单击​​您的元素 - > 复制 css 或 xpath)

    find(:css, "your button css selector").click
    
    find(:xpath, "your button xpath").click
    

    【讨论】:

    • 使用特定的有优势吗? css 选择器不是较新/首选的方法吗?还是我编造的?
    • 如果页面中有多个具有相同类的元素,则该类可能会给您带来一些问题。但无论如何,您可以使用within 方法避免它,该方法允许您在页面的特定区域中查找元素。 css selectorxpath 更灵活,但它们在可读性方面有所损失,即使您可以避免冗长的 css selector/xpath 创建自定义选择器 github.com/jnicklas/capybara#xpath-css-and-selectors
    • 我使用了 Xpath 选择器,因为右键单击没有复制 css。但它确实最终奏效了!谢谢!
    【解决方案2】:

    如果两个按钮真的做同样的事情,那么你总是可以做的

    first(:button, 'Save', minimum: 1).click
    

    与使用 xpath 选择器相比,随着页面结构的变化,它更不容易损坏。 minimum:1 选项只会让#first 稍等片刻,直到页面上至少有一个按钮(就像 find 一样) - 根据您的测试结构,这可能不是必需的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多