首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails,Capybara - capybara有时找不到添加的html元素。

Rails,Capybara - capybara有时找不到添加的html元素。
EN

Stack Overflow用户
提问于 2017-05-15 11:06:48
回答 1查看 151关注 0票数 0

我在下面有一个功能

代码语言:javascript
复制
  def fill_in_sources_details
    click_button 'New Source'
    assert_text 'Sources'
    fill_in 'text', :with => @source.text
    fill_in 'url', :with => @source.url
  end

单击New Source后,新字段将添加到页面中。有时测试失败,因为测试没有等待新元素的添加,因此无法找到新的字段。我尝试添加assert_text 'Sources',这是显而易见的,但有时仍然失败。知道怎么修吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-15 16:54:46

这里可能会发生很多事情,其中有些取决于您使用的驱动程序和驱动程序版本。

  1. 实际上,您没有一个与“文本”匹配的字段--这在这里不太可能,因为它有时会工作。
  2. 初始的click_button 'New Source'缺少实际的按钮。这可能会发生取决于您使用的驱动程序,如果按钮动画到页面(幻灯片,放大等)。您可以通过将sleep 5放在click_button前面来判断是否是这样的。如果这解决了问题,那么您应该考虑在测试模式下禁用动画。它将加快您的测试,并使他们更可靠。
  3. click_button正在发生,但字段显示在页面上需要太长时间(慢速ajax请求等)。把sleep 5放在click_button之后,应该已经诊断出来了,不过可能需要超过5秒的时间。assert_text 'Sources'是一种很好的诊断方法,只要文本“源”只有在输入可见时才会出现在页面上,但是该文本似乎过于通用(可能已经出现在当前页面上)。您可以始终将一个wait选项传递给fill_in,这将使其等待元素出现的时间更长 fill_in 'text',:with => @source.text,等待: 20
  4. 您的应用程序中有一个间歇性错误,它阻止了字段的显示。通过捕获ElementNotFound、暂停应用程序和查看浏览器中的错误来诊断这一点。 开始fill_in 'text',:使用=> @source.text,等待: 20援救Capybara::ElementNotFound binding.pry # byebug,等等--不管您使用的是什么调试
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43977891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档