Не удалось прочитать текст из текстового поля, используя gettext() selenium webdriver?

Я не могу читать даты из 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());


    }

Ответ 1

Вызов текста input должен быть:

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

Не спрашивайте меня, почему это так: всегда было. Введя элемент input, вы меняете его атрибут value.

Ответ 2

Я думаю, что Selenium согласуется с тем, как DOM работает, но все же, я не думаю, что любой пользователь ожидает, что getText не вернет то, что видно на экране. И innerHTML, и innerText возвращают пустую строку, чтобы объяснить, почему getText ничего не возвращает.

Я думаю, что Selenium должен упростить странности DOM. Другими словами, getText() должен возвращать то, что пользователь видит на экране, а если в случае использования требуется реальный innerText, они могут вызывать другой API.

Ответ 3

В этом случае вы должны вызывать getAttribute("value").

Я считаю, что getText() возвращает только внутренний текст элемента, а не введенное значение.

Ответ 4

driver.findElement(By.id( "ctl00_SampleContent_Date5" )) GetAttribute ( "значение" );.

он всегда возвращает значения, которые были записаны внутри текстового поля