我不能實例化HtmlHiddenInput並使用appendChild方法來創建表單對象,因爲前者沒有構造函數。有沒有更好的方法,而不是在JavaScript中這樣做?我想保持JavaScript禁用,以節省資源。在Java HtmlUnit中,如何向表單添加隱藏的輸入?
1
A
回答
0
理想情況下,我想能夠寫(f是一個HtmlForm控件,第一個HtmlPage,BA Web客戶端):
HashMap a = new HashMap();
a.put("name", "concealed");
a.put("value", "secret");
f.appendChild(new HtmlHiddenInput(p,a));
但由於HtmlHiddenInput不能被實例化,我不得不對JavaScript的回退,這是更慢和更醜:
bool j = b.isJavaScriptEnabled();
if (!j) { b.setJavaScriptEnabled(true); }
p.executeJavaScript(
"{" +
" var" +
" d = document," +
" i = d.createElement('input');" +
" with (i) {" +
" name = 'concealed';" +
" type = 'hidden';" +
" value = 'secret';" +
" }" +
" d.getElementsByName('form1')[0].appendChild(i);" +
"}");
if (!j) { b.setJavaScriptEnabled(false); }
恕我直言,有時過於嚴格的限制擋道。我沒有看到爲什麼應該禁止實例化HtmlHiddenInput的好理由。
+1
如果這是您問題的一部分,請將其添加到問題中 - 請勿將其作爲答案發布。 – skaffman 2011-02-14 10:26:06
2
這是官方的方式來做到這一點:我有HtmlFileInput同樣的問題,並通過InputElementFactory已經找到了解決辦法
// where htmlPage is the current page you're on
// and internalForm is the form you want to append the field to
HtmlElement createdElement = htmlPage.createElement("input");
createdElement.setAttribute("type", inputName);
createdElement.setAttribute("name", name);
createdElement.setAttribute("value", value);
internalForm.appendChild(createdElement);
0
:
HtmlPage page;
...
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute("", "type", "type", "", "hidden");
HtmlElement el = InputElementFactory.instance.createElement(page, "input", attrs);
HtmlHiddenInput hiddenInput = (HtmlHiddenInput) el;
相關問題
- 1. 如何在提交時向表單添加新的隱藏輸入字段
- 2. jQuery - 添加隱藏的輸入到表單提交
- 3. 如何輸入數據添加到隱藏輸入字段
- 4. 如何在django-tables2中爲ID字段添加隱藏輸入?
- 5. JQuery - 爲隱藏的輸入添加值
- 6. 如何隱藏表單中的文件輸入項?
- 7. 動態添加隱藏輸入與jquery
- 8. 如何在創建表單中添加多個隱藏項目
- 9. 填充隱藏表單輸入的onclick
- 10. 隱藏輸入的設置值內部形式HtmlUnit
- 11. 如何隱藏表單中的所有輸入元素?
- 12. 如何隱藏和顯示錶單的輸入元素在HTML
- 13. 如何在選項標籤內添加隱藏輸入類型?
- 14. 禁用隱藏表單輸入
- 15. 在顯示標籤中添加隱藏的輸入元素
- 16. Symfony2的 - 如何通過實體隱藏的表單輸入
- 17. Python:如何隱藏輸入
- 18. 如何動態添加輸入表單?
- 19. 如何在slickgrid中添加隱藏列
- 20. 如何在Python中簡單輸入隱藏的詞
- 21. 提交後隱藏HTML5輸入表單並隱藏
- 22. Elm:如何在沒有初始值的表單中添加隱藏的輸入字段?
- 23. 將隱藏字段添加到表單
- 24. 向軌道中的所有窗體添加隱藏的輸入字段
- 25. 如何在Flex中添加HTML之類的隱藏輸入字段?
- 26. Javascript:如何在點擊提交按鈕時將隱藏的輸入標籤添加到表單中?
- 27. 如何在drupal中隱藏節點數據輸入表單中的字段?
- 28. 如何在無序列表元素中添加表單輸入
- 29. 如何在表中設置隱藏的輸入值
- 30. 在使用GET的表單中是否可以隱藏輸入?
的HtmlUnit是一個測試框架,而不是一個DOM操縱框架。這是工作的錯誤工具。 – skaffman 2011-02-14 10:26:31
我知道。但我需要做大量的網頁抓取,並且無法找到比支持JavaScript的HtmlUnit更好的東西。屏幕抓取不適合我,太慢了。無論如何,這是我需要一點DOM操作的唯一情況:我只想從第一個請求中注入一個「max-results」參數,以便在第一個結果頁面上獲得更多結果。 – 2011-02-14 11:33:28