我无法在日期选择之后从ajax日历控件中读取日期
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Calendar/Calendar.aspx
我没有收到任何错误,但我无法从文本框中获取任何值。
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());
}
答案 0 :(得分:41)
获取input
文字的电话应为:
driver.findElement(By.id("ctl00_SampleContent_Date5")).getAttribute("value");
不要问我为什么,这只是always has been的方式。通过键入input
元素,您将更改其value
属性。
答案 1 :(得分:1)
我认为Selenium与DOM的工作方式保持一致,但我认为任何用户都不认为getText不会返回屏幕中可见的内容。 innerHTML和innerText都返回空字符串,以便解释为什么getText不返回任何内容。
我认为Selenium应该简化DOM的怪异性。换句话说,getText()应该返回用户在屏幕上看到的内容,然后如果用例需要真正的innerText,他们可以调用其他API。
答案 2 :(得分:0)
在这种情况下,您应该调用getAttribute("value")
。
我相信getText()
只返回元素的内部文本,而不是输入的值。
答案 3 :(得分:0)
driver.findElement(By.id(&#34; ctl00_SampleContent_Date5&#34))的getAttribute。(&#34;值&#34);
它始终返回已在文本框中写入的值