2012-06-29 19 views
11

no puedo leer las fechas de control de calendario después de la selección ajax fecha¿No se puede leer el texto del cuadro de texto con gettext() de selenium webdriver?

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Calendar/Calendar.aspx

no consigo ningún error, pero no puedo ir a buscar cualquier valor de cuadro de texto.

public static void main(String[] args) throws InterruptedException { 

     WebDriver driver = new FirefoxDriver(); 
     driver.get("http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Calendar/Calendar.aspx"); 
     driver.manage().window().maximize(); 


     //Default calendar: 
     driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_Date1']")).click(); 

     for(int i=0;i<=5;i++){ 

      for(int j = 0;j<=6;j++){ 

       System.out.print(driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_defaultCalendarExtender_day_"+i+"_"+j+"']")).getText()+"-"); 

      } 
      System.out.println(); 
     } 

     driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_defaultCalendarExtender_day_3_4']")).click(); 

     System.out.println(driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_Date1']")).getText()); 


     //Calendar with an associated button: 

     System.out.println("Calendar with an associated button:------------------------------------------------------"); 

     driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_Image1']")).click(); 

     for(int i=0;i<=5;i++){ 

      for(int j = 0;j<=6;j++){ 

       System.out.print(driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_calendarButtonExtender_day_"+i+"_"+j+"']")).getText()+"-"); 

      } 
      System.out.println(); 
     } 

     Thread.sleep(5000L); 
     driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_Image1']")).click(); 
     driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_calendarButtonExtender_day_3_3']")).click(); 

     System.out.println(driver.findElement(By.xpath("//*[@id='ctl00_SampleContent_Date5']")).getText()); 


    } 

Respuesta

40

La llamada para obtener el texto input debe ser:

driver.findElement(By.id("ctl00_SampleContent_Date5")).getAttribute("value"); 

No me preguntes por qué, es sólo la forma en que always has been. Al escribir en un elemento input, está cambiando su atributo value.

+1

Gracias .Su soluciones es perfecta –

+0

tiene mucho sentido, ya que es el "valor" que queremos. Muchas gracias. :) – joaorodr84

1

Creo que Selenium está alineado con el funcionamiento de DOM, pero aún así, no creo que ningún usuario espere que getText no devuelva lo que está visible en la pantalla. Tanto innerHTML como innerText devuelven cadena vacía para que explique por qué getText no devuelve nada.

Creo que el Selenio debería simplificar las rarezas del DOM. En otras palabras, getText() debería devolver lo que un usuario ve en la pantalla, luego, si un caso de uso desea el texto interno real, puede llamar a otra API.

0

En este caso, debe invocar getAttribute("value").

Creo que getText() solo devuelve el texto interno del elemento, no el valor ingresado.

0

driver.findElement (By.id ("ctl00_SampleContent_Date5")). GetAttribute ("valor");

siempre devuelve los valores que se han escrito en el interior de texto

Cuestiones relacionadas