编辑:添加了截图
我的javafx有问题。 我需要从文档中获取一个元素,但是当我在线程中编写此代码时,它会在getelementbyid上返回null
使用:
scanprofilesbutton.setOnAction((ActionEvent e) -> {
if (engine.getLocation().contains("events")) {
if (engine.getDocument() == null) {
System.out.println("null");
}
Element el = engine.getDocument().getElementById("nav-profile");
System.out.println("You are logged in as " + el.getChildNodes().item(1).getChildNodes().item(1).getTextContent().trim());
}
});
异常(java.lang.NullPointerException):
scanprofilesbutton.setOnAction((ActionEvent e) -> {
Thread thread = new Thread() {
public void run() {
while (true) {
if (engine.getLocation().contains("events")) {
if (engine.getDocument() == null) {
System.out.println("null");
}
Element el = engine.getDocument().getElementById("nav-profile");
Exception ->> System.out.println("You are logged in as " + el.getChildNodes().item(1).getChildNodes().item(1).getTextContent().trim());
} else {
break;
}
try {
Thread.sleep(5000);
} catch (Exception e) {
}
}
}
};
thread.start();
});
我坚持这个,我没有找到任何解决方案。谢谢!
答案 0 :(得分:0)
或者:
1)engine.getDocument().getElementById("nav-profile")
返回null,因此Element el
为空。
OR
2)下面链式调用中的某些内容返回null,也许是您的.item(1)
方法(您的意思是.item(0)
)?
el.getChildNodes().item(1).getChildNodes().item(1).getTextContent()
不是每五秒轮询一次,更好的解决方案是将监听器附加到加载工作程序,并仅检查网页何时成功加载。请参阅API example。