Вопрос по webdriver, selenium, ajax – Не удается прочитать текст из текстового поля с помощью gettext () из селенового веб-драйвера?

12

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


    }

Ваш Ответ

4   ответа
0

getAttribute("value").

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

41

Призыв, чтобы получитьinput текст должен быть:

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

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

Имеет смысл, так как это «значение» что мы хотим. Большое спасибо. :)
Спасибо. Ваше решение идеально Jasmine.Olivra
0

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

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

1

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

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

Похожие вопросы