HTML单元更改页面上的元素使其无法访问

时间:2015-08-11 14:53:44

标签: javascript java htmlunit

我正在使用HTMLunit(同时尝试了2.43.1和2.46.0)。我遇到一个问题,看起来HTMLunit实际上是在加载过程中呈现/更改HTML。

如果我在Chrome中检查HTML,则该字段如下所示:

<div class="field">
    <input id="password" name="password" placeholder="Password" type="password">
</div>

非常简单,因为我应该能够通过id =“password”选择字段,对吧?好吧,当我通过HTMLunit加载页面时:

driver.setJavascriptEnabled(true);
driver.get(baseUrl + "/");
String foo = driver.getPageSource();
System.out.println("======\n" + foo + "\n==========\n");

查看输出,该字段如下所示:

<div class="field">
    <input id="password" type="text" placeholder="Password" class="placeholder" value="Password"/>
    <input name="password" placeholder="Password" type="password" style="display: none;"/>
</div>

现在,还有一件事,这个div只有通过点击JavaScript按钮才能看到。所以,为此,我执行:

driver.findElement(By.cssSelector("button.js-login-widget-button")).click();
foo = driver.getPageSource();
System.out.println("======\n" + foo + "\n==========\n");

现在该字段看起来像这样:

<div class="field">
    <input id="" type="text" placeholder="Password" class="placeholder" value="Password"/>
    <input name="password" placeholder="Password" type="password" style="display: none;"/>
</div>

所以,现在,我没有id来选择字段。我可以按名称选择,但输入是不可见的,所以我得到一个ElementNotVisibleException。

但我的重要问题是为什么HTMLunit会改变HTML而打破我?

请帮助!

谢谢, 大卫

0 个答案:

没有答案