2012-07-30 2 views
16

Wie kann ich das Element in DOM basierend auf einem benutzerdefinierten Attribut finden?Selenium-Webdriver: So finden Sie das Element in DOM basierend auf benutzerdefiniertem Attribut

Zum Beispiel:

DOM-Attribute sind in HTML-Ansicht nicht vorhanden. Mit DOM Inspector kann ich das Attribut Custom eindeutig identifizieren.

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

Hier _celltype ist benutzerdefinierte Attribut. Dieses Attribut ist in der HTML-Ansicht nicht sichtbar.

Antwort

18

Sie müssten das Element nach xpath suchen.

Das folgende würde jedes Element finden, die das _celltype Attribut mit dem Wert ‚Zelltyp‘ hat:

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

Wenn Sie wissen, welche Art von Element es ist, dass Sie es präziser machen. Zum Beispiel, wenn Sie wissen, sind sie div-Tags tun:

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

verwenden, aber ich brauche den Wert von _celltype zu erhalten. – user1563042

+0

Sorry, ich bin mir nicht sicher, ob ich dein Ziel verstehe. Versuchen Sie, ein Element basierend auf seinem _celltype-Attribut zu finden, oder versuchen Sie, den _celltype-Attributwert eines Elements zu finden? Für mich sieht es so aus, als ob ersteres von dieser Antwort und letzteres von dem Code in Ihrer Frage erfasst wird. Könntest du klarstellen, wonach du suchst, vielleicht ein HTML-Beispiel geben und welchen Wert/welches Element du davon bekommen willst? –

+0

Entschuldigung, ich habe versucht zu fragen, wie man das Custom DOM Attribut (_celltype) des Web Elements liest. – user1563042

2

, um ein Element von xPath:

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

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

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

Dadurch wird den Text von ‚Zelltyp‘ Feld und zeigt den Wert davon zu bekommen.

14

XPath ist böse, können Sie diese stattdessen

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

CssSelector ist vorzuziehen. Liest auch einfacher. –

+1

Es ist auch schneller. Ich führe eine Anwendung aus, in der XPath im Grunde sechs mal langsamer als jeder andere Selektor ist. Da ich diese Operation mehrmals ausführen muss, hat dies einen großen Unterschied in der Gesamtlaufzeit meiner App. –

Verwandte Themen