2012-09-20 16 views
9

EDIT: También probamos esteCómo agarrar simplemente Identificación del elemento - el uso de selenio WebDriver 2

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

recibo el texto vacío

Estoy tratando de encontrar una manera de asir simplemente Identificación de la lista que estoy obteniendo y debajo está mi código y una foto impresa de mi pantalla.

// WebDriver obteniendo una lista de texto

el código de abajo me devuelve el número correcto de registros pero sólo dame la Text pero yo después de Text y Id de un particular, Text

Probé esto:

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

este

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

y esto ...

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

del todo el código de la línea me da los rendimientos correctos pero sin identificación.

Aquí está la pantalla de impresión de mi página:

enter image description here

+0

Al decir de identificación, que quiere decir qué? ¿La identificación real del control (ctl00_etc) o el texto mismo? ('Elemento 1', 'Elemento 2', etc.) – Arran

+0

Identificación real del control –

Respuesta

13

Después de conseguir todos los elementos mediante el siguiente método, se ejecutan en bucle para obtener los identificadores de todos de los elementos:

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

Estoy obteniendo el texto de 'webElement1' y Id de' webElement4', pero ¿cuál es la mejor combinación de togather? –

+0

No obtuve ¿cuál es su requisito? Si desea ejecutar en bucle esa Lista, puede obtener todos los textos de elementos o identificadores. Desea obtener algún identificador de elemento, algún texto de elemento significa que necesita usar algunas sentencias de condición dentro del ciclo. – Santoshsarma

0

1) i Intentaré compartir la idea del enfoque que elegiría para resolver su problema:

getElementsByTagName('input');//returns array of elements 

2) utilizando el atributo js executor get element, ID en particular, iterando a través de toda la matriz devuelta por getElementsByTagName ('input') y obteniendo sus ID. // muestra de código que utiliza para encontrar atributo de color:

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; 

} 

esto es simplemente mi assumtion la forma en que sea posible probar. espero que de alguna manera le ayuda a)

0

Si sólo necesita un id:

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