我在弄清楚javascript更新后如何获取某些HTML内容时遇到了一些麻烦。
具体来说,我正在尝试从美国海军天文台总时钟获取当前时间。它有一个h1与元件ID的USNOclk,其中它显示当前时间。
首次加载页面时,此元素设置为显示“正在加载...”,然后javascript启动,并通过来将其更新为当前时间
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);
}
因此,问题在于我不确定如何获取更新时间。当我检查元素时,我看到“正在加载...”作为h1元素的内容。
我仔细检查了javascript是否已启用,并尝试在waitForBackgroundJavaScript上调用该函数,webclient希望它能给javascript时间来开始更新内容。但是,到目前为止还没有成功。
我当前的代码:
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())
}
}
如何触发JavaScript更新HTML?
蛊毒传说
相关分类