2016-11-04 18 views
1

我有一个网页游戏,在使用javascript和jquery的输入字段中显示值。我期待测试的值在页面上可见。但是,如果我检查元素,该值不会出现在HTML中。水豚在页面上找不到价值

下面是一些JS代码,并将其值:

function updateTotal(){ 
     $('#edit-game-result').val(game.totalScore); 
     } 

这里是HTML的输入字段:

<input type="text" id="edit-game-result" size="10" maxlength="3" class="form-text" readonly/> 

我已经试过水豚测试,如:

预期(find_field ('edit-game-result')。value).to eq 10

该测试找到该字段,但给出outp UT: 预期:10有:无

我认为这是某种由于这样的: Is the HTML is View Source different from the HTML in Inspect Element? ,但我不能找到一种方法,使水豚读值。

这可能也与此有关: http://ahmednadar.github.io/12/09/2013/overwrite-how-Capybara-ignores-hidden-elements/

我相信场确实在测试运行时具有值10。但是,我无法在水豚测试中使用该值。

你能帮我找到一个水豚测试,可以解释为什么这不起作用吗?

回答

0

您遇到的问题是您正在查找元素,然后检查其中的值,而不会等待该值匹配。相反,你应该使用的匹配水豚提供

expect(page).to have_field('edit-game-result', with: '10') 

将使用水豚等待/重试行为要等到值被改变。

+0

感谢您的回复。我试过,但得到了: '失败/错误:expect(page).to have_field('edit-game-result',':''012') 预计会发现字段“编辑游戏结果”值为“10 “但没有匹配。还发现“”,它与匹配选择符但不是所有滤镜相匹配。“ – jeebee

+0

@jeebee然后,当您检查它时,字段在Capybara.default_max_wait_time秒内的值不会为'10',或者它在页面上不可见。您可以通过将'visible:false'选项传递给'have_field'来检查一个不可见的元素,但是您确实不应该依赖于检查测试中的不可见元素。除此之外,显示你的测试的其余部分,所以我们可以看到你在做什么 –

+0

嗨托马斯 我的代码是在这里: https://github.com/glynester/bowling-challenge/blob/last_frame/spec/ features/game_play_spec.rb 我尝试了许多组合,包括添加“visible:false”,但它没有奏效。我甚至在spec_helper.rb中为水豚添加了10秒的等待时间。 感谢您的期待。 – jeebee