首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Capybara找到一个快速出现和消失的元素(加载微调器)

问如何让Capybara找到一个快速出现和消失的元素(加载微调器)
EN

Stack Overflow用户
提问于 2020-07-28 02:43:49
回答 1查看 219关注 0票数 2

我有一个应用程序,您可以为其选中一个复选框,单击提交按钮,然后进行值更新。在现实世界中,单击会触发API调用,并使用响应更新值。在API被调用和返回值之间,我还设置了一个旋转器(一个加载旋转器)来填充要更新的值区域。这在实际使用中效果很好。但是,在测试中,我希望确保微调器出现、消失,然后新值就位。在测试环境中(使用rspec),我设置了一个API伪服务,以通过webmock的stub_request响应所有sinatra调用。

所以问题是sinatra真的很快地给出了值,如此之快,以至于水豚永远看不到旋转器。(我认为这就是问题所在)

我试图人为地减慢sinatra对这些功能规格的响应,但它不起作用。此外,我不想,因为我想要的套件是快速的。下面是一个示例规范:

代码语言:javascript
复制
    it 'lets the user change the pickup library of a hold', js: true do
      visit holds_path
      page.check 'hold_list__3911148'
      page.select 'A terrific value', from: 'some_dropdown'
      page.click_button 'Update Selected Things'
      expect(page).to have_css 'spinner-border' # this will _always_ fail to be detected
      expect(page).to have_css '#hold3911148 .pickup_at', text: 'York'
    end
EN

回答 1

Stack Overflow用户

发布于 2020-07-28 03:03:51

测试和应用程序异步运行,所以如果你真的需要验证微调器的出现,那么你唯一的选择就是放慢测试的响应速度,让微调器真正出现并被看到。根据你使用的驱动程序和浏览器驱动程序(chromedriver,geckodriver等)作者选择实现按钮点击的方式,你必须等待的时间可能比你预期的要长。这是因为驱动程序作者可能会选择让按钮点击等待一段时间,看看它们是否会触发页面加载,而Capybara在click_button返回之前无法开始寻找微调器。

我知道你说过减慢响应“不起作用”,但如果没有关于你在那里做了什么的任何细节,就很难诊断出这一点。这还假设所有浏览器调用都将转到您的应用程序,然后您的应用程序在返回之前调用外部服务(您通过sinatra应用程序伪造该服务) (webmock不能用于伪造直接从浏览器发出的外部API调用)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63121600

复制
相关文章

相似问题

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