2012-07-30 805 views
16

如何根據自定義屬性在DOM中查找元素?Selenium webdriver:如何根據自定義屬性在DOM中查找元素

例如:

DOM屬性不存在於HTML視圖中。使用DOM檢查器我可以識別出Custom屬性是唯一的。

driver.findElement(By.id("SimpleSearch:dIndicesGrid:1:Value")).getAttribute("_celltype"); 

這裏_celltype是自定義屬性。該屬性在HTML視圖中不可見。

回答

18

您將不得不通過xpath找到元素。如果你知道它是什麼類型的元素,你可以使其更加具體

driver.findElement(By.xpath("//*[@_celltype='celltype']")) 

下會發現有_celltype屬性與價值「單元格類型」的任何元素。例如,如果你知道他們是div標籤,這樣做:

driver.findElement(By.xpath("//div[@_celltype='celltype']")) 
+1

,但我需要得到_celltype值。 – user1563042 2012-07-31 07:26:31

+0

對不起,我不確定我瞭解你的目標。你是否試圖根據它的_celltype屬性找到一個元素,或者你是否想要找到元素的_celltype屬性值?對我來說,前者是由這個答案覆蓋的,而後者是由你的問題中的代碼覆蓋的。你能澄清你在找什麼,也許給一個示例HTML和你試圖從中獲得什麼價值/元素? – 2012-07-31 12:56:40

+0

對不起,我試圖問如何閱讀Web元素的自定義DOM屬性(_celltype)。 – user1563042 2012-08-13 11:28:15

2

通過XPATH查找元素:

WebElement element = driver.findElement(By.xpath("xpath_link")); 

xpath_link = //*[@_celltype='celltype']; // This is sample xpath; 

System.out.println(element.getText()); 

這將讓「格類型」字段的文本,並顯示它的價值。

14

XPath是邪惡的,你可以用這個代替

By.CssSelector("[_celltype='celltype']"); 
+1

CssSelector更可取。讀取也更容易。 – 2015-03-10 18:35:27

+1

它也更快。我正在運行一個應用程序,其中XPath基本上比其他選擇器慢6倍。由於我必須多次運行此操作,因此這會對我的應用程序的總運行時間產生巨大影響。 – 2016-08-09 17:46:53

相關問題