首页 > 解决方案 > Java 和 Selenium:无法获取输入字段的内容

问题描述

我在获取输入字段的文本内容时遇到问题。我似乎只能用我正在使用的方法来了解它。

页面截图:

(这是一个项目列表,包括每行中的一个输入字段。)

在此处输入图像描述

标记:

<ul class="budsjett budsjett--kompakt" id="sifobudsjett">
   <li class="budsjett-post ng-isolate-scope ng-valid" id="SIFO_mat">
      <div class="felt" >
         <div class="felt-indre">
            <div id="SIFO_mat-farge" class="sifo-farge farge-graa"></div>
               <span class="budsjett-post-beskrivelse" >
                  <span tabindex="0" title="Vis hjelpetekst" role="button">
                     <span class="hjelpetekst-label" >Mat og drikke</span>
                  </span>
                  <span class="sifo-hjelp" aria-hidden="true"></span>
               </span>
            </span>
            <span class="budsjett-post-verdi">               
               <span class="budsjett-post-verdi-endret" ng-show="!skrivebeskyttet" aria-hidden="false" style="">
                  <input id="SIFO_mat-input" name="SIFO_mat" type="number">
                  <span class="felt-enhet"><abbr id="SIFO_mat-enhet" title="kroner" translate=""><span class="ng-scope">kr</span></abbr></span>
                  </span>
               </span>
        </div>
    </div>
</li>

编码:

List<WebElement> sifoliste = driver.findElement(By.id("sifobudsjett")).findElements(By.tagName("li"));

第一个元素的结果:“Mat og drikke”。

List<WebElement> sifoliste = driver.findElement(By.id("sifobudsjett")).findElements(By.tagName("input"));

第一个元素的结果:“”

List<WebElement> sifoliste = driver.findElement(By.id("sifobudsjett")).findElements(By.className("budsjett-post-verdi-endret"));

第一个元素的结果:“kr”

有任何想法吗?

标签: javaseleniumselenium-webdriver

解决方案


<input>标签没有文本,您在 UI 中看到的内容保存在属性value中。即使在 html 中看不到它也存在

driver.findElement(By.id("SIFO_mat-input")).getAttribute("value");

对于所有<input>

List<WebElement> sifoliste = driver.findElement(By.id("sifobudsjett")).findElements(By.tagName("input"));
String text = sifoliste.get(0).getAttribute("value"); // 2790

推荐阅读