Java HtmlUnit找不到该元素
我正试图从页面的墙上获取id为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
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),现在它可以工作了!非常感谢。