水豚无法在页面上找到值

capybara cannot find value on a page

我有一个网页游戏,它使用 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).eq 10

此测试找到该字段但给出输出: 预期:10 得到:无

我认为这是由于以下原因造成的: Is the HTML is View Source different from the HTML in Inspect Element? 但是我找不到让 Capybara 读取值的方法。

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

我相信当测试为 运行 时,该字段的值为 10。但是我无法在 Capybara 测试中访问该值。

你能帮我找到一个有效的 Capybara 测试,或者说明为什么这不起作用吗?

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

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

这将使用 Capybaras waiting/retrying 行为来等待值更改。