Erhalten Sie den geänderten HTML-Inhalt, nachdem er von Javascript aktualisiert wurde? (htmlunit)
Ich habe einige Probleme, herauszufinden, wie ich den Inhalt von HTML erhalten kannnach dem Javascript hat es aktualisiert.
Insbesondere versuche ich, die aktuelle Zeit von zu erhaltenUS Naval Observatory Master Clock. Es hat eineh1
Element mit derID
vonUSNOclk
in dem es die aktuelle Zeit anzeigt.
Wenn die Seite zum ersten Mal geladen wird, wird in diesem Element "Loading ..." angezeigt. Anschließend wird Javascript aktiviert und aktualisiert
function showTime()
{
document.getElementById('USNOclk').innerHTML="Loading...<br />";
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null){
document.getElementById('USNOclk').innerHTML="Sorry, browser incapatible. <BR />";
return;
}
refresher = 0;
startResponse = new Date().getTime();
var url="http://tycho.usno.navy.mil/cgi-bin/time.pl?n="+ startResponse;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
Das Problem ist also, dass ich nicht sicher bin, wie ich die aktualisierte Zeit erhalten soll. Wenn ich das Element überprüfe, sehe ich das "Laden ..." als Inhalt desh1
Element.
Ich habe überprüft, ob Javascript aktiviert ist, und ich habe versucht, die anzurufenwaitForBackgroundJavaScript
Funktion auf derwebclient
in der hoffnung, dass es dem javascript zeit geben würde, mit der aktualisierung der sachen zu beginnen. Bisher jedoch noch kein Erfolg.
import com.gargoylesoftware.htmlunit._
import com.gargoylesoftware.htmlunit.html.HtmlPage
object AtomicTime {
def main(args: Array[String]): Unit = {
val url = "http://tycho.usno.navy.mil/what.html"
val client = new WebClient(BrowserVersion.CHROME)
println(client.isJavaScriptEnabled()) // returns true
client.waitForBackgroundJavaScript(10000)
// client.waitForBackgroundJavaScriptStartingBefore(10000) //tried this one too without success
var response: HtmlPage = client.getPage(url)
println(response.asText())
}
}
Wie starte ich das Javascript, um das HTML zu aktualisieren?