加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在Capybara中使用同步?

发布时间:2020-12-16 19:19:57 所属栏目:百科 来源:网络整理
导读:如果使用wait_until非常清楚(我在使用本机Webdriver方法创建测试时使用了这样的方法),而不是新的同步方法(抱歉:)).我已经阅读了关于为什么不推荐使用wait_until的主题,我已经阅读了有关该文章的文章,我已经阅读了带有方法描述的文档,并且还阅读了描述所在的
如果使用wait_until非常清楚(我在使用本机Webdriver方法创建测试时使用了这样的方法),而不是新的同步方法(抱歉:)).我已经阅读了关于为什么不推荐使用wait_until的主题,我已经阅读了有关该文章的文章,我已经阅读了带有方法描述的文档,并且还阅读了描述所在的代码.但我没有找到任何示例或教程如何使用此方法.

请允许任何人提供我(也可能是其他人)可以看到并学习如何使用此方法的少数情况

例如案例

expect(actual).to equal(expected)

我应该在哪里“放”同步方法才能在超时过后获得负面异常?

UPD:对于有兴趣的人请查看以下链接:

http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara

https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/base.rb#L44

解决方法

我刚刚发现需要使用#synchronize的情况.我有一个帮助方法,它在页面上查找一个元素,如果它存在,它点击它并返回一些在页面上更新的文本(通过JavaScript).在某些情况下,在找到元素并单击它之间,由于其他JavaScript代码,它可能会消失(并可能重新出现)并且可能引发Selenium :: WebDriver :: Error :: StaleElementReferenceError异常.所以我使用这样的同步:
page.document.synchronize do
  element = first('#whatever')
  if element
    element.click
    find('#foo').text
  else
    nil
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读