2012-06-29 30 views
11

tôi không thể đọc ngày từ kiểm soát lịch ajax sau ngày lựa chọnKhông thể đọc văn bản từ hộp văn bản bằng gettext() của trình duyệt web selenium?

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

tôi không nhận được bất kỳ lỗi nhưng tôi không thể lấy bất kỳ giá trị từ textbox.

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


    } 

Trả lời

40

Cuộc gọi để có được những văn bản input nên là:

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

Đừng hỏi tôi tại sao, nó chỉ là cách thức mà nó always has been. Bằng cách nhập vào một phần tử input, bạn đang thay đổi thuộc tính value của nó.

+1

Cảm ơn bạn giải pháp hoàn hảo của ngươi thật là –

+0

Làm cho cảm giác hoàn hảo, vì nó là "giá trị" mà chúng tôi muốn. Cảm ơn rất nhiều. :) – joaorodr84

1

Tôi nghĩ rằng Selenium được căn chỉnh theo cách DOM hoạt động nhưng tôi vẫn không nghĩ rằng bất kỳ người dùng nào mong đợi rằng getText sẽ không trả về những gì hiển thị trên màn hình. Cả hai innerHTML, và innerText trả về chuỗi rỗng để giải thích tại sao getText không trả về bất cứ thứ gì.

Tôi nghĩ rằng Selenium nên đơn giản hóa những điều kỳ quặc của DOM. Nói cách khác, getText() sẽ trả về những gì người dùng nhìn thấy trong màn hình, sau đó nếu một trường hợp sử dụng muốn innerText thực, họ có thể gọi API khác.

0

Trong trường hợp này, bạn nên gọi getAttribute("value").

Tôi tin rằng getText() chỉ trả về văn bản bên trong của phần tử chứ không trả về giá trị đã nhập.

0

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

nó luôn luôn quay trở lại các giá trị đã được viết bên trong textbox

Các vấn đề liên quan