【问题标题】:How to find a tag using XPath and click it using Capybara如何使用 XPath 查找标签并使用 Capybara 单击它
【发布时间】:2020-04-21 07:36:23
【问题描述】:

使用 Ruby、Capybara、Selenium、Cucumber、XPath 等在我的自动化项目中查找元素并单击的最佳方式是什么?

我需要点击并展开(等同于手风琴)的 HTML 元素是:

<a href="javascript:;" class="dcjq-parent">
  <i class=""></i>
  <span>Customs Reports</span>
  <span class="dcjq-icon"></span>
</a>

我目前使用 XPath 命令查找元素并单击,但效果不是很好,因为它正在查找元素但有时单击有时不单击。

page.find(:xpath, "//*[text()='Customs Reports']").click

【问题讨论】:

  • 欢迎来到 SO!请阅读“How to Ask”及其链接页面。语法对 SO 很重要;该站点不是留言板,它更像是编程问答的在线参考书。请使用大写的专有名称。

标签: ruby testing xpath automated-tests capybara


【解决方案1】:

正如@mechnicov 所说,单击链接的“正确”方式是使用click_link 'Customs Reports',但它的行为可能与您正在做的事情没有任何不同。

这是因为 Capybara 会在“看到”链接后立即点击链接,这可能是在附加所需的 JavaScript 行为之前,或者在链接动画进入页面(移动)时。

任何一种都可能产生您所看到的不稳定行为,因为 JavaScript 行为不会触发,或者如果因为点击可能会错过移动链接而产生动画效果。您可以通过在单击之前添加sleep 来测试它,但修复它的正确方法是断言页面上的某些内容表明该页面实际上已准备好供用户输入。

该断言的内容完全取决于您正在测试的应用程序以及页面上实际发生的情况。

【讨论】:

    【解决方案2】:

    要点击 Capybara 中的链接,您可以使用:

    click_link 'Customs Reports'
    

    另一种方式是:

    find('span', text: 'Customs Reports').click
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-02-25
      • 2011-08-09
      相关资源
      最近更新 更多