【问题标题】:Capybara - unable to click a linkCapybara - 无法点击链接
【发布时间】:2015-10-13 22:10:03
【问题描述】:

我正在使用 Capybara 2.4.4 点击链接。 html是这样的:

<a name="skiplink" id="skiplink" type="button" href="javascript:void(0);" onclick="skipForm(); return false;">salta</a>

水豚命令:

find("a", :text => "salta").click
find('skiplink').click

两者都不起作用:

Failure/Error: find("a", :text => "salta").click
     NoMethodError:
       undefined method `empty?' for nil:NilClass

我已经从save_and_open_page 输出中复制粘贴了html,所以它可能是正确的

我正在使用默认驱动程序(无硒)

谢谢

【问题讨论】:

  • 如果我下面的回答没有帮助,请将堆栈跟踪添加到错误中,以便我可以查看错误来自何处

标签: ruby rspec tdd capybara bdd


【解决方案1】:

以下任何一个都应该有效

click_on('salta')
find(:css, '#skiplink').click   # the :css is only necessary if you've changed capybaras default selector

你的 find("a", :text => "salta").click 也应该可以工作——但是当使用 capybaras 默认驱动程序(racktest)时,点击 javascript 链接是行不通的,因为驱动程序没有支持javascript。您需要切换到支持 javascript 的不同驱动程序(selenium、capybara-webkit、poltegeist 等)

【讨论】:

  • 效果很好。 find('skiplink').clickfind(:css, '#skiplink').click 有什么区别?
  • find 有几个选项,第一个是确定要执行哪种类型的查找的符号 - 如果该符号被省略,则默认为 Capybara.default_selector - 默认为 :css -第二个选项是一个 css 选择器 - 所以假设 Capybara.default_selector 是 :css find('skiplink') 会尝试查找类型为 skiplink、find('#skiplink') 或 find(:css,'#skiplink') 的元素会找到 ID 为 skiplink 的元素 - 还有许多其他类型的查找器,请参阅 github.com/jnicklas/capybara/blob/master/lib/capybara/…,您可以添加自己的自定义查找器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2018-04-06
相关资源
最近更新 更多