2012-06-29 10 views
11

Non riesco a leggere risale controllo calendario Ajax dopo la selezione della dataImpossibile leggere il testo dalla casella di testo utilizzando gettext() del selenio web?

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

non ottengo alcun errore, ma non posso prendere qualsiasi valore da casella di testo.

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()); 


    } 

risposta

40

La chiamata per ottenere il testo input dovrebbe essere:

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

non chiedetemi perché, è solo il modo in cui always has been. Digitando un elemento input, si modifica l'attributo value.

+1

Grazie .your soluzioni è perfetto –

+0

ha perfettamente senso, dal momento che è il "valore" che vogliamo. Molte grazie. :) – joaorodr84

1

Penso che il selenio sia allineato su come funziona il DOM ma, comunque, non credo che nessun utente si aspetterà che getText non restituisca ciò che è visibile sullo schermo. Sia innerHTML che innerText restituiscono una stringa vuota in modo da spiegare perché getText non restituisce nulla.

Penso che il selenio dovrebbe semplificare le stranezze del DOM. In altre parole, getText() dovrebbe restituire ciò che un utente vede sullo schermo, quindi se un caso d'uso vuole il vero testo interiore, possono chiamare altre API.

0

In questo caso è necessario richiamare getAttribute("value").

Credo che getText() restituisca solo il testo interno dell'elemento, non il valore immesso.

0

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

sempre restituire i valori che sono stati scritti all'interno di testo

Problemi correlati