日期选择后我无法从 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());
}
获取input
文本的调用应该是:
driver.findElement(By.id("ctl00_SampleContent_Date5")).getAttribute("value");
不要问我为什么,它就是一直的方式。通过在 input
元素中键入内容,可以更改其value
属性。
我认为Selenium与DOM的工作方式一致,但我仍然不认为任何用户期望getText不会返回屏幕中可见的内容。innerHTML 和 innerText 都返回空字符串,因此可以解释为什么 getText 不返回任何内容。
我认为硒应该简化DOM的奇怪之处。换句话说,getText() 应该返回用户在屏幕中看到的内容,然后如果用例想要真正的 innerText,他们可以调用其他 API。
您应该调用 getAttribute("value")
。
我相信getText()
只返回元素的内部文本,而不是输入的值。
driver.findElement(By.id("ctl00_SampleContent_Date5")).getAttribute("value");
它始终返回已写入文本框中的值