我有以下HTML / JS代码:
<script>
function sync()
{
var n1 = document.getElementById('textArea');
var n2 = document.getElementById('textArea2');
n2.value = n1.value;
}
</script>
<h1>TESTING PAGE</h1>
<div>
Edit text:
</br>
<textarea id="textArea" rows="4" cols="50" >Input text to copy...</textarea>
</br>
<button id="copyButton" type="button" onclick="sync()">Copy Text</button>
</br>
</br>
<textarea id="textArea2" rows="4" cols="50"> </textarea>
</br>
<a href="testPage2.html">Link to next page</a>
</div>
如您所见,我只是在按下按钮时将内容从一个文本框复制到另一个文本框。我使用JavaScript来做到这一点。
当我尝试从两个文本框中获取文本以进行比较时,“。text”方法仅向我提供在加载页面时框具有的文本,而不是在此之后添加的文本。
更改元素后如何访问元素,以便获得当前的文本内容?
谢谢!
答案 0 :(得分:0)
text
方法获取指定元素的后代文本节点内容。
那不是您想要的表单字段,而是您想要的value
find('#textArea2').value
话虽这么说,实际上您不应该只是获取值并与== / eq进行比较,因为如果您的JS速度慢,它可能会导致测试不稳定。使用Capybara提供的匹配器/断言之类的
val = find('#textArea').value
click_button('Copy Text')
expect(page).to have_field('textArea2', with: val) # RSpec
# assert_field('textArea2', with: val) # minitest