首页 > 解决方案 > TestFx 在 WebView 中检索 HTML 的元素内容

问题描述

我正在使用 TestFx 在我的 JavaFX 应用程序中编写测试。在我访问 FXML 元素之前一切顺利,但我想知道如何访问 WebView HTML 内容。WebView 是我的应用程序的主要部分,所以我必须为此添加测试。

下面是用于在 WebView 中打开的 HTML 内容示例。

    <html> 
 <body class="mainBody" spellcheck="true" onclick="mainbodyclick()" contenteditable="false" id="idsBody"> 
  <div class="maindiv" id="maindivcontainer" oncontextmenu="maindivcontextcall(event);"> 
   <div id="regdivcontainer" contenteditable="true" style="display:block">      
    <table contenteditable="false" class="block idsTemp" onclick="tabClick(this)" id="tab0.0737569887231827"> 
     <tbody> 
      <tr> 
       <td class="header readOnly"><a name="1test468"></a><font size="3" color="blue">1</font></td> 
       <td title="block name" class="name" id="tb_name">test468</td> 
     </tbody> 
    </table>
    </div>
    </div>
    </body>
    </html>

我正在尝试通过以下代码单击 td element id="tb_name" 但它没有用

robot.clickOn("#tb_name");
robot.lookup("#webViewID > #tb_name").query();
robot.lookup("#webViewID > .web-engine #tb_name").query();
robot.lookup("#webViewID > .web-engine > .mainBody > .maindiv > .regdivcontainer #tb_name").query();

谢谢你。

标签: javajavafxjunitjavafx-11testfx

解决方案


Platform.runLater(new Runnable() {
            @Override
            public void run() {

                javafx.scene.web.WebView mywebview=waitsUtil.lookupById(webView,robot);

                String RegistrationID=(String) mywebview.getEngine().executeScript("document.body.getElementsByTagName('td')[0].innerHTML;");
                RID=RegistrationID.split("<br>");

            
            System.out.println(mywebview.getEngine().executeScript("document.body.innerHTML;"));

mywebview.getEngine().executeScript("document.getElementById('consent-yes').click();");
            }
        });

推荐阅读