2016-07-14 17 views
-1

私は日付ピッカーから将来の日付を選択しようとしているが、これを行うことについては移動する方法を理解することはできないのですから、将来の日付。セレン-Select日付ピッカー

私は事前に14日の日付を選択する必要がありますが、日付ピッカーは、一度に1つのカレンダー月を示しています。画像は次のリンクにアップロードされています。 14日後に控え、将来の日付を選択するロジックがどうなるか

enter image description here

============================================== ===================

新しい情報

私は、DatePickerのは、行のクラスに分けられ、放火犯を使用して要素に、より深く見えました。以下は、日付ピッカーのXML出力の輸出です:

<tr class="w27"> <tr class="w28"> <td id="startCalendarDiv_t_cell14" class="calcell wd0 d10 previous calcellleft">10</td> <td id="startCalendarDiv_t_cell15" class="calcell wd1 d11 previous">11</td> <td id="startCalendarDiv_t_cell16" class="calcell wd2 d12 previous">12</td> <td id="startCalendarDiv_t_cell17" class="calcell wd3 d13 previous">13</td> <td id="startCalendarDiv_t_cell18" class="calcell wd4 d14 previous">14</td> <td id="startCalendarDiv_t_cell19" class="calcell wd5 d15 today selected selectable"> <a class="selector" href="#">15</a> </td> <td id="startCalendarDiv_t_cell20" class="calcell wd6 d16 selectable calcellright"> </tr> <tr class="w29"> 

<td id="startCalendarDiv_t_cell21" class="calcell wd0 d17 selectable calcellleft"> 
<td id="startCalendarDiv_t_cell22" class="calcell wd1 d18 selectable"> 
<td id="startCalendarDiv_t_cell23" class="calcell wd2 d19 selectable"> 
<td id="startCalendarDiv_t_cell24" class="calcell wd3 d20 selectable"> 
<td id="startCalendarDiv_t_cell25" class="calcell wd4 d21 selectable"> 
<td id="startCalendarDiv_t_cell26" class="calcell wd5 d22 selectable"> 
<td id="startCalendarDiv_t_cell27" class="calcell wd6 d23 selectable calcellright"> 
</tr> 
<tr class="w30"> 

あなたは今日の日付を見れば、それは次のプロパティがあります。

<td id="startCalendarDiv_t_cell19" class="calcell wd5 d15 today selected selectable"> 

私の考えは、今日」はクラス別の要素を見つけることでしたそのIDを特定し、14日を追加して選択します。しかし、それをやっていく方法がわからない。

また、 'findElementは' 機能していません。私が書いた 'findElement'コードは、

どのような手がかりですか?

+3

1:試しましたか? 2:あなたの結果は何ですか? 3:あなたのコードを教えてください。 4:このカレンダーの背後にあるHTMLコードを表示します。 –

+0

どのような言語ですか?ウェブページへのリンクを提供するか、htmlコードを投稿できますか? – Madhan

答えて

0

ロジックは次のようになります強調表示された日付要素

  • ため

    1. ルック
    2. がためにその13 = 27
    3. 外観に14を追加し(この場合は13)にテキスト値を取得します(この場合は2016年7月)
    4. 2016年7月の最終日(この場合は31)
    5. 上記の3が2016年7月の最終日を超えている場合は、その最後の日と6番からテキストを持つ要素の1
    6. 表情で月を追加し、6号

    で判断されるように同じ月であることを確認してください-------新しい情報の後------------更新---------------------------あなたが使用することはできません

    By.ClassName(クラスに空白文字が含まれる場合)代わりに、クラスで「今日」を見つけるには、Xpathを使用してください:

    driver.FindElement(By.XPath("//td[contains(@class,'today')]")); 
    
  • +0

    問題は、強調表示された項目を検索する方法です。 c#またはセレンを使ってハイライトされた日付を探すオプションがありますか? – user2434600

    0

    これはJavaコードであり、Calendar Pickerとは関係ありません。

    はちょうどあなたのコード内でこのスクリプトを使用してのSendKeysを使用して、日付ボックスに入力する「newDay」という文字列を使用します()。

    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
        Date date = new Date(); 
        String todaysDate = dateFormat.format(date); 
        System.out.println(todaysDate); 
    
    
        String month=todaysDate.substring(0,2); 
        String day=todaysDate.substring(3,5); 
    
        int monthValue=Integer.parseInt(month); 
        int dayValue=Integer.parseInt(day); 
    
        if(dayValue+14>31) 
        { 
         int temp= 31-dayValue; 
         dayValue=14-temp; 
         monthValue=monthValue+1; 
        } 
        else 
        { 
         dayValue=dayValue+14; 
        } 
        String newDay = monthValue+"/"+dayValue+"/"+"2016"; 
        System.out.println(newDay); 
    

    ドライバ。findElement(by.xpath(DateBox))。sendKeys(newDay);

    +0

    sendkeyは、日付が読み込まれるテキストボックスとしては機能しません – user2434600

    1

    Answer by Shekharは正しいですが、古いクラスを使用していて、やりすぎです。

    java.time

    java.timeフレームワークは、Java 8に内蔵以降れます。これらのクラスは、java.util.Date.Calendar、& java.text.SimpleDateFormatなどの古い面倒な日時クラスに取って代わります。

    詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。

    java.timeの機能の多くは、Java 6 & 7のThreeTen-Backportにバックポートされ、さらにThreeTenABPにAndroidに適合しています。

    LocalDate

    LocalDateクラスは、時間日の時間帯なしなし日付専用の値を表しています。あなたの日付ピッカーのウィジェットがまだjava.timeタイプで動作するように更新されていない場合

    LocalDate localDate = LocalDate.of(2016 , 7 , 13); 
    LocalDate twoWeeksLater = localDate.plusWeeks(2); 
    

    、あなたはその部品のLocalDateオブジェクトを問い合わせることができます。

    int year = localDate.getYear(); 
    int month = localDate.getMonthValue(); // The method `getMonth` returns an object from the `Month` enum rather than an integer. 
    int dayOfMonth = localDate.getDayOfMonth();