java - Htmlunit通过ID而不是名称获取表单输入

标签 java htmlunit

我有一个包含多行和类似输入的表单。它们具有不同的 ID 但具有相同的名称。

<input id="E2EMPL1" class="uppercase required" type="text" value="" maxlength="9" size="9" name="E2EMPL">

<input id="E2EMPL2" class="uppercase required" type="text" value="" maxlength="9" size="9" name="E2EMPL">

我可以填写第一行,没问题,但是当涉及到填写第二行时,我就想不通了。

这是为了填写第一行:

            HtmlPage mainPage = webClient.getPage(siteName);
            form = mainPage.getFormByName("timeForm");

            for (TimeEntry te: aList){
               form.getInputByName("chkaction").setValueAttribute("checked");
               form.getInputByName("E2EMPL").setValueAttribute(te.getResource());
               form.getInputByName("ww_fE2WKDT").setValueAttribute(te.getEntryDate());
            }

但是当名称保持不变但 ID 更改为 EMPL1、EMPL2 等时,我不确定如何填写第二行。我想我应该使用 xpath,但我不确定如何?

form.getByXPath("//input[@id='E2EMPL2']"); ???

编辑:作为旁注。我已经尝试使用 HTTPClient 来发布数据。不幸的是,它不适用于这种形式,我不知道为什么。我在这里问了一个问题,但从未得到任何答案,也没有足够的代表来悬赏。但是,我只是尝试了 HTMLUnit,如果我填写表单并点击提交按钮,它就会正常工作。这就是我不使用 HTTPClient 的原因。

如果有人想看问题,我把它删了,但如果有人真的想看,我会取消删除。

HTML表单有5行数据,填充一行有点慢,点击提交5次 vs 填写5行再点击提交。我希望它会快一点,但如果不可能做到这一点,我会放弃这个。我希望有些人可以有见识。

最佳答案

试试这个:

HtmlForm Form = htmlPage.getHtmlElementById("form id");

关于java - Htmlunit通过ID而不是名称获取表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442613/

相关文章:

java - 如何使用 GridBagLayout 和 GridLayout 实现最佳对齐?

java - HTML 单元登录

screen-scraping - 替代 HtmlUnit

java - 为什么我无法使用 HTMLUnit Java 连接到该网站

java - 如何使用 Eclipse 将 .diff 补丁应用到 HtmlUnit

java - 谷歌镜像API

java - Java 中的符号

java - JAR list 类路径,使用文件夹而不是 jar

java - JTextfield 中的转义字符

java - 如何在 HtmlUnit 中模拟浏览器的后退按钮?