小编Gly*_*yph的帖子

使用Capybara,如何切换到带有"_blank"目标的链接的新窗口?

也许这实际上不是我遇到的问题,但似乎当我"click_link"一个带有target ="_ blank"的链接时,会话将焦点保持在当前窗口.

所以我要么能够切换到新窗口,要么忽略_blank属性 - 本质上,我只是希望它实际上转到链接指示的页面,这样我就能确保它是正确的页面.

我使用webkit和selenium驱动程序.


我在下面提交了我的调查结果.非常感谢更彻底的答案.

此外,这只适用于selenium - 相当于webkit驱动程序(或指出我自己可以发现它的位置)将非常感激.

testing selenium webkit ruby-on-rails capybara

74
推荐指数
10
解决办法
4万
查看次数

如何在Rails 5中禁用turbolink?

处理websockets时,这一直是一个令人头痛的问题,除了添加bug之外,它还会破坏我的性能.由于ActionCable是我升级的全部原因,我非常想完全摆脱它.

ruby-on-rails-5

54
推荐指数
3
解决办法
2万
查看次数

Rspec:应该是(这个或那个)

在两个(或更多)结果中的任何一个都可以接受的情况下编写rspec的最佳方法是什么?

这是我想要做的一个例子.这显然是错误的(我认为),但它应该给你我想要完成的事情的要点:

it "should be heads or tails" do
  h="heads"
  t="tails"
  flip_coin.should be(h || t)
end
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以编写自己的rspec匹配器"should_be_one_or_the_other(option1,option2)",但这似乎有点多 - 我希望有更好的解决方案.

ruby rspec

32
推荐指数
4
解决办法
1万
查看次数

检查数组是否已经排序?

我知道如何按顺序放置一个数组,但在这种情况下,我只是想知道它是否有序.我想,一串字符串将是最简单的,并且在这方面的答案是值得赞赏的,但是包括基于某些任意参数检查顺序的能力的答案是最佳的.

这是一个示例数据集.名称:

[["a", 3],["b",53],["c",2]]
Run Code Online (Sandbox Code Playgroud)

元素本身是包含多个元素的数组,其中第一个是字符串.我想看看这些元素是否按字母顺序排列.

ruby arrays

22
推荐指数
2
解决办法
8789
查看次数

Vim和Ruby - 匹配"do"和"end"s?

我确信我们都熟悉"意外的kEnd"问题.他们总是(对我而言)要追查很多麻烦,因为Vim与"do"和"end"不匹配.(显然,其他以"结束"结尾的元素,如"if")

有没有办法配置Vim来显示这些匹配,以帮助简化调试?

ruby vim

13
推荐指数
2
解决办法
4741
查看次数

Rspec - 将输出格式化为Progress/Documentation/HTML

使用Rspec,我希望能够看到标准进度条,输出到包含文档格式生成的规格表的文件,并且还生成了一个html文件,而不是多次运行测试.

如何为这些格式分配多种格式和文件目标?

rspec

9
推荐指数
1
解决办法
3168
查看次数

只在特定环境中加载rake rasks?

现在,我正在使用bundler来管理我的宝石.Bundler为不同的环境加载不同的宝石.

我有一些使用测试宝石(rspec)的rake任务,但是这些会导致生成环境中没有加载gem的问题.

所以我希望能够做的只是在测试环境中加载rake任务(以及与之关联的require'rspec/core/rake_task'行).

我无法找到最好的方法来做到这一点.

我目前有:

require "bundler"
require 'rspec/core/rake_task'

desc "Task for running Rspec tests"
RSpec::Rake::SpecTask.new(:spec)
Run Code Online (Sandbox Code Playgroud)

rake ruby-on-rails bundler

9
推荐指数
1
解决办法
3653
查看次数

结合RSpec过滤器?

我一直在浏览文档,但有关多个过滤器如何工作的描述似乎有点缺乏.有没有人对多个过滤器的行为有一个很好的解释或来源?他们列出的订单是否重要?这是一个代码示例,可能有其他行为以外的行为......

Rspec.configure do |c|
  this_version = get_version_number.to_sym
  c.filter_run :focus=> true
  c.filter_run_excluding :limit_to=>true, this_version => false
  c.filter_run :new_stuff=>true
  c.run_all_when_everything_filtered
end

it "is focused, but not new", :focus
it "is is new", :new_stuff
it "is new and focused", :new_stuff, :focus
it "is focused and new, but limited to a different version", :focus, :limit_to, :correct_version
Run Code Online (Sandbox Code Playgroud)

试验这个,看起来像"filter_run_excluding"行简单行为的多个参数就是你多次写行.有没有办法让它实际组合过滤器检查,以便它排除(或运行,我想)只有列出两个标签的示例?

ruby rspec

7
推荐指数
1
解决办法
1661
查看次数

使用 ActionCable,有没有办法计算频道内有多少订阅者?

对于我正在构建的应用程序,我有一个“大厅”页面,人们可以在其中配置他们想要加入的区域。非常基本。

我希望有当前订阅该页面频道的活跃消费者总数,以便用户知道周围是否有其他人可以与之交互。

是否有捷径可寻?

ruby-on-rails-5 actioncable

5
推荐指数
1
解决办法
2753
查看次数

为什么看起来Capybara"等待页面加载"计时器适用于匹配器但不适用于查找器?

我目前正在运行一个检查特定元素的测试,然后对它做一些事情.该元素需要一点点javascript完成踢,但在计时器我已经有Capybara设置.

由于某些原因

assert session.has_xpath?(xpath_route)
Run Code Online (Sandbox Code Playgroud)

工作正常,但是

assert link=session.first(:xpath, xpath_route)
Run Code Online (Sandbox Code Playgroud)

失败,说它找不到元素.并且很快 - 在等待计时器用完之前很久.

我只能假设这意味着计时器只适用于匹配器,而不是发现者,这很好,但我怎么能强迫它继续寻找直到找到我正在寻找的元素?

ruby capybara

4
推荐指数
1
解决办法
5772
查看次数