【发布时间】:2014-01-26 03:13:41
【问题描述】:
我想使用 HtmlUnit 获取 facebook 帖子的 xpath。你可以参考这两个问题来获得更多关于我想要做什么的想法:
要模拟我所做的,您可以按照 q-1。 HTML代码(Facebook页面)的pastebin链接是http://pastebin.com/MfXsYSJQ。
或者你可以直接去https://www.facebook.com/bhramakarserver。 我只想获取包含带有文本的帖子的跨度的xpath:“嗨!这是这个页面的第一篇文章。” 我尝试的是这样的:
public class ForStackOverflow {
public static void main(String[] args) throws IOException {
WebClient client=new WebClient(BrowserVersion.FIREFOX_17);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setRedirectEnabled(true);
client.getOptions().setThrowExceptionOnScriptError(true);
client.getOptions().setCssEnabled(true);
client.getOptions().setUseInsecureSSL(true);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage page1=client.getPage("https://www.facebook.com/bhramakarserver");
System.out.println(page1.asXml());
//getting the xpath of span of class="userContent"
HtmlInput input=(HtmlInput)page1.getByXPath("/html/body//input[@type='submit']").get(0);
System.out.println(input.asXml());
//This line gives error as the xpath evaluates to null
HtmlSpan span=(HtmlSpan)page1.getByXPath("/html/body//span[@class='userContent']").get(0);
}
}
问题似乎是 page1 具有静态 html。在此,span 元素:
<span data-ft="{"tn":"K"}" class="userContent">Hi! this is the first post of this page.</span>
是动态生成的。因此它显示为 page1 的 html 中的注释。但是通过检查元素进行检查时,它显示为正常。因此它的动态未注释。在加载了所有动态内容之后,我是否无法让 page1 的 html 处于该状态,以便我可以正确获取 xpath?可以使用 selenium web-driver 来完成吗?
【问题讨论】:
-
@MostyMostacho 你能帮忙吗?
标签: javascript ajax facebook selenium-webdriver htmlunit