水豚无法在页面上找到值
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 行为来等待值更改。
我有一个网页游戏,它使用 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 行为来等待值更改。