2012-07-30 808 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

相关问题