2010-12-02 81 views
4

元素如何可以訪問此元素:的HtmlUnit訪問無標識或名稱

<input type="submit" value="Save as XML" onclick="some code goes here"> 

更多信息:我必須以編程方式訪問網頁和模擬點擊一個按鈕就可以了,然後將生成xml文件,我希望能夠保存在本地機器上。
我試圖用的HtmlUnit庫這樣做,當然所有的例子我能找到使用的getElementById()getElementByName()方法。不幸的是,這個確切的元素沒有名稱或ID,所以我失敗了。我認爲我必須做的事情是使用getByXPath()方法,但我完全迷失在XPath文檔中(這件事對我來說都是新的)。
我一直堅持這個幾個小時,所以我真的需要所有的幫助,我可以得到。
在此先感謝。

回答

11

XPATH有幾種選擇來選擇input元素。

下面是一個選項,它看起來在整個文檔有一個名爲與價值「提交」,並命名爲與值的屬性的屬性的input元素「保存爲XML」。

//input[@type='submit' and @value='Save as XML'] 

如果您可以提供更多的結構,可以創建更具體(高效)的XPATH。舉例來說,這樣的事情可能工作:

/html/body//form//input[@type='submit' and @value='Save as XML'] 

您應該能夠使用XPath用這樣的代碼:

client = new WebClient(BrowserVersion.FIREFOX_3) 
client.javaScriptEnabled = false 

page = client.getPage(url) 

submitButton = page.getByXPath("/html/body//form//input[@type='submit' and @value='Save as XML']") 
+1

謝謝Mads,我已經想出了自己的答案(有一些令人毛骨悚然的醜陋代碼:)),但你的解決方案更好,更優雅。 – 2010-12-02 12:51:39

0

雖然我會,在大多數情況下,建議使用XPath,如果你不知道任何事情,你可以嘗試getInputByValue(String value)方法。這是一個基於你的問題的例子:

// Fetch the form somehow 
HtmlForm form = this.page.getForms().get(0); 
// Get the input by its value 
System.out.println(form.getInputByValue("Save as XML").asXml()); 
相關問題