问题描述
我正在使用TestFx在JavaFX应用程序中编写测试。在访问FXML元素之前一切都很好,但是我不知道如何访问WebView HTML内容。 WebView是我的应用程序的主要部分,因此我必须为此添加测试。
下面是我的HTML内容示例,该示例用于在WebView中打开。
<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元素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();
谢谢。
解决方法
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();");
}
});