Pobierz zmienioną treść HTML po zaktualizowaniu przez Javascript? (htmlunit)
Mam pewne problemy z ustaleniem, jak uzyskać zawartość jakiegoś HTMLpo javascript go zaktualizował.
W szczególności staram się uzyskać aktualny czasZegar główny US Naval Observatory. Mah1
element zID
zUSNOclk
w którym wyświetla aktualny czas.
Gdy strona ładuje się po raz pierwszy, ten element jest ustawiony na wyświetlanie „Ładowanie ...”, a następnie włącza się javascript i aktualizuje go do bieżącego czasu za pośrednictwem
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);
}
Problem polega na tym, że nie jestem pewien, jak uzyskać zaktualizowany czas. Kiedy sprawdzam element, widzę „Ładowanie ...” jako treśćh1
element.
Sprawdziłem już dwukrotnie, czy javascript jest włączony i próbowałem wywołaćwaitForBackgroundJavaScript
funkcja nawebclient
jak również mając nadzieję, że da to czas javascript na rozpoczęcie aktualizacji. Jednak bez powodzenia.
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())
}
}
Jak uruchomić javascript w celu zaktualizowania kodu HTML?