Jasmine.Olivra Jasmine.Olivra - 4 months ago 46
Ajax Question

Unable to read text from textbox using gettext() of selenium webdriver?

I can't read dates from ajax calendar control after date selection

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

I don't get any error but I can't fetch any value from 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());


}

Answer

The call to get the input text should be:

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

Don't ask me why, it's just the way it always has been. By typing into an input element, you are changing its value attribute.