Java HtmlUnit找不到该元素

Java HtmlUnit找不到该元素,java,html,facebook,htmlunit,Java,Html,Facebook,Htmlunit,我正试图从页面的墙上获取id为u\u 0\u 1e的文本框,但它找不到任何东西。最后一行打印null。 代码如下: java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); WebClient client = new WebClient(BrowserVersion.CHROME); JavaScriptEngine eng

我正试图从页面的墙上获取id为
u\u 0\u 1e
的文本框,但它找不到任何东西。最后一行打印
null
。 代码如下:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);

        WebClient client = new WebClient(BrowserVersion.CHROME);
        JavaScriptEngine engine = new JavaScriptEngine(client);

        client.setJavaScriptEngine(engine);
        HtmlPage home = client.getPage("https://www.facebook.com/login.php");
        HtmlSubmitInput login = (HtmlSubmitInput) home.getElementById("u_0_1");
        HtmlTextInput name = (HtmlTextInput) home.getElementById("email");
        HtmlPasswordInput pass = (HtmlPasswordInput) home.getElementById("pass");

        name.setValueAttribute("myname");
        pass.setValueAttribute("mypass");

        HtmlPage page = login.click();
        HtmlPage wall = client.getPage("https://www.facebook.com/");

        System.out.println(wall.getElementById("u_0_1e"));

我对你的问题有一些看法

首先,您已禁用HtmlUnit的日志记录。因此,如果您有任何JavaScript问题,那么您将不会看到它。如果您实际遇到JavaScript错误,那么JavaScript代码将无法完全执行。如果您试图获取的元素是从服务器动态获取的(可能使用AJAX),那么JavaScript错误(如果有)可能会导致无法获取该元素

如果您是webscraping(显然是这样),那么您对JS没有任何控制权,因此您只能接受它不工作,或者禁用JS并手动处理AJAX请求

当然,您会看到该页面在真实浏览器上运行得非常完美,但要考虑到它使用的JavaScript引擎HtmlUnit与真实浏览器不同

其次,包含单词
engine
的两行是绝对不需要的

第三,正如我在你前面的一个问题中提到的,这将更适合通过法律手段来处理

最后,您可能会发现另一个答案很有用:

我将浏览器版本更改为默认版本(或Internet explorer),现在它可以工作了!非常感谢。