13

日付を選択した後、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

4 に答える 4

43

inputテキストを取得するための呼び出しは次のとおりです。

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

理由は聞かないでください。これまでどおりですinput要素に入力することで、そのvalue属性を変更しています。

于 2012-06-29T08:46:19.053 に答える
1

Selenium は DOM の仕組みに沿っていると思いますが、それでも、getText が画面に表示されているものを返さないと期待するユーザーはいないと思います。innerHTML と innerText の両方が空の文字列を返すため、getText が何も返さない理由が説明されています。

Selenium は DOM の奇妙さを単純化するべきだと思います。つまり、getText() はユーザーが画面に表示するものを返す必要があり、ユース ケースで実際の innerText が必要な場合は、他の API を呼び出すことができます。

于 2012-08-16T20:21:10.443 に答える
1

この場合、 を呼び出す必要がありgetAttribute("value")ます。

getText()入力された値ではなく、要素の内部テキストのみを返す と思います。

于 2016-07-14T17:41:56.550 に答える