2012-09-20 8 views
9

EDIT: Ich habe auch versucht, dieseWie gerade Element-ID greifen - Selenium WebDriver 2

var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList(); 

ich den leeren Text

bekommen Ich versuche, einen Weg zu finden, nur ID aus der packen Liste, die ich bekomme und unten ist mein Code und eine Druckaufnahme meines Bildschirms.

// WebDriver eine Liste von Text bekommen

die folgenden Code gibt mir die richtige Anzahl von Datensätzen, aber es mir nur die Text geben, aber ich bin nach Text und Id eines bestimmten Text

Ich habe versucht, dies:

var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td/span"))).ToList(); 

diese

var webElements2 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td"))).ToList(); 

und diese ...

var webElements3 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']"))).ToList(); 

der gesamte Code der Linie gibt mir die richtigen kehrt aber ohne Id. Hier

ist die Druckbild von meiner Seite:

enter image description here

+0

Wenn Sie ID bedeuten, meinen Sie, was? Die tatsächliche ID des Steuerelements (ctl00_etc) oder der Text selbst? ("Punkt 1", "Punkt 2" usw.?) – Arran

+0

aktuelle ID des Steuerelements –

Antwort

13

Nachdem wir alle Elemente unterhalb Methode verwendet, in Schleife laufen alle Elements IDs zu erhalten: i

List<WebElement> element = driver.findElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))); 

for(WebElement ele:elements) 
{ 

     ele.getAttribute("id");  // for getting id of each element 

     ele.getText();    //for getting text of each element 

} 
+0

Ich erhalte den Text von 'webElement1' und ID von' webElement4', aber was ist das Beste, um zusammenzufügen? –

+0

Ich habe nicht bekommen, was Ihre Anforderung ist? Wenn Sie in der Liste loopen möchten, können Sie alle Elementtexte oder IDs erhalten. Sie möchten eine Element-ID erhalten, ein Element-Text bedeutet, dass Sie einige Bedingung-Anweisungen in der Schleife verwenden müssen. – Santoshsarma

0

1) Ich werde versuchen, die Idee des Ansatzes zu teilen, den ich wählen würde, um Ihr Problem zu lösen:

2) js executor verwenden, um das Attribut des Elements, insbesondere die ID, zu erhalten, indem es durch das gesamte von getElementsByTagName ("input") zurückgegebene Array iteriert und ihre IDs abruft. // Probe von Code verwendete ich Farbe Attribut zu finden:

public String jsGetColor(String cssSelector){ 

    JavascriptExecutor js = (JavascriptExecutor) driver; 
    StringBuilder stringBuilder = new StringBuilder(); 
    stringBuilder.append("var x=$(\'"+css+"\');"); 
    stringBuilder.append("return x.css('color')"); 
    String res= (String) js.executeScript(stringBuilder.toString()); 
    return res; 

} 

dies einfach meine assumtion ist, wie es möglich sein, zu versuchen. hoffe, es hilft Ihnen irgendwie)

0

Wenn Sie nur eine ID benötigen:

String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");