2012-06-29 8 views
11

मैं तिथि चयनसेलेनियम वेबड्राइवर के gettext() का उपयोग कर टेक्स्टबॉक्स से टेक्स्ट पढ़ने में असमर्थ?

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

के बाद ajax कैलेंडर नियंत्रण से दिनांक नहीं पढ़ सकते हैं मैं किसी भी त्रुटि नहीं मिलता है, लेकिन मैं पाठ बॉक्स से किसी भी मूल्य को नहीं लाया जा सकता है।

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


    } 

उत्तर

40

कॉल प्राप्त करने input पाठ होना चाहिए: क्यों, यह सिर्फ यह always has been तरीका है

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

मुझे मत पूछो। input तत्व में टाइप करके, आप इसकी value विशेषता बदल रहे हैं।

+1

धन्यवाद .आपके समाधान एकदम सही है –

+0

सही भावना बनाता है अंदर लिखा गया है लौटने के लिए, क्योंकि यह "मूल्य" है कि हम चाहते हैं। बहुत बहुत धन्यवाद। :) – joaorodr84

1

मुझे लगता है कि सेलेनियम को डॉम काम करने के तरीके के साथ गठबंधन किया गया है लेकिन फिर भी, मुझे नहीं लगता कि कोई भी उपयोगकर्ता उम्मीद करता है कि getText स्क्रीन में दिखाई देने वाली चीज़ों को वापस नहीं करेगा। आंतरिक HTML, और आंतरिक टेक्स्ट दोनों खाली स्ट्रिंग लौटते हैं ताकि यह समझाया जा सके कि getText कुछ भी वापस क्यों नहीं करता है।

मुझे लगता है कि सेलेनियम को डोम की विषमता को सरल बनाना चाहिए। दूसरे शब्दों में, GetText() को स्क्रीन में जो उपयोगकर्ता दिखाई देता है उसे वापस करना चाहिए, फिर यदि कोई केस केस वास्तविक आंतरिक टेक्स्ट चाहता है, तो वे अन्य API को कॉल कर सकते हैं।

0

इस मामले में आपको getAttribute("value") का आह्वान करना चाहिए।

मेरा मानना ​​है कि getText() केवल तत्व के आंतरिक पाठ को लौटाता है, इनपुट मूल्य नहीं।

0

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

यह हमेशा मान जो पाठ बॉक्स

संबंधित मुद्दे