如何处理水豚黄瓜的动态含量

时间:2018-08-16 12:17:56

标签: javascript ruby selenium cucumber capybara

我有以下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”方法仅向我提供在加载页面时框具有的文本,而不是在此之后添加的文本。

更改元素后如何访问元素,以便获得当前的文本内容?

谢谢!

1 个答案:

答案 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