2017-02-08 3 views
0

IDEを使用してWebアプリケーションを自動化する作業を進めています。私は日付のエントリで立ち往生しています。自動スクリプト(カレンダーから選択するのではなく日付を入力)で日付を入力すると、カレンダーポップアップが表示され、別のアプリケーション領域に進むと終了しません。私は1つの画面で約6つの日付のエントリがあり、スクリプトが実行されている間、すべてのカレンダーが開いたように見えます。今、スクリプトが停止し、画面上のどこかをクリックすると、入力された日付が消去され、テキストボックスが空白になります。これは、スクリプトが日付の検証メッセージを投げている別の画面に進むのを妨げています。ただし、日付を手動で入力して他のエリアに進むと、カレンダーのポップアップが閉じられ、日付がテキストボックスに保存されます。Selenium IDEを使用した日付入力

注:入力するのではなく日付を選ぶことは、特に過去の日付を選択する場合は、数か月を得るためにスクロールするのに多くのクリックが必要です。

どのように日付を保存するか、各日付入力後にカレンダーポップアップを閉じることができますか。

ありがとうございました。

答えて

0

この質問に対する回答は、使用しているカレンダープラグインによって大きく異なります。

問題を再現するために、セマンティックUIフロントエンドフレームワーク(セマンティックUIはきちんとしている、それもチェックしてください:)で日付ピッカーを使用しました。

とにかく、何が起こっているのかをもっと明確にするため、FirebugとFirepathプラグインをmozillaブラウザにインストールすることをお勧めします。

このインストールを完了したと仮定すると、あなたの人生は今のところ単純になります。私の場合は、ポップアップが表示されますが、これはリンク付きの日付表だけです。だから次のようにします:

  1. まず、入力ボックスをクリックしてポップアップを開きます。 Firepathプラグインに入力ボックスを配置します。以下のスクリーンショットを参照してください:The input box selected in Firepath with popup highlighted 注:強調表示された領域は、現在隠されているポップアップですが、まだ入力ボックスをクリックしていません!
  2. 次に、私は拾いたい日付を見つけるためにFirepathを検索します。 Date I want to pick using selenium だから私は、以下に示すように、基本的table要素であるこの日付に対応する日付テーブル内の要素を検索する必要があります:赤丸に下記のように私は私の日として2月1日を選択したいとし Firepath of the date i wish to pick using selenium
  3. 次に、Selenium IDEを使用してクリックアクションを実行できるように、テーブルにこの日付要素のxパスが必要です。 xパスを取得するには、以下のように要素を右クリックします。 click on td of the corresponding date
  4. この情報をすべて使用して、次のことを行います。まず、入力コマンドをクリックしてclickAt希望の日付に対応するテーブル要素をクリックする。入力ボックスのクリックコマンドにポップアップが表示され、希望の日付のclickAtコマンドの後にポップアップが表示されなくなります。コードは以下の通りです: The final Selenium IDE window

注:これは私はあなたが私はあまりにもあなたのユースケースでそれを行うことができたい場合は、あなたの問題を複製することを選んだ日付ピッカーのとおりですが、あなたが共有する必要があります私のためにあなたのページの完全なHTMLがあなたを助ける!

私は何かを理解することができず、助けが必要な場合は、コメントの特定のポイントについてページまたはクエリのソースコードを共有してください。次のように

jsbinコードは次のとおりです。

$('#example1').calendar(); 
 
$('#example2').calendar({ 
 
    type: 'date' 
 
}); 
 
$('#example3').calendar({ 
 
    type: 'time' 
 
}); 
 
$('#rangestart').calendar({ 
 
    type: 'date', 
 
    endCalendar: $('#rangeend') 
 
}); 
 
$('#rangeend').calendar({ 
 
    type: 'date', 
 
    startCalendar: $('#rangestart') 
 
}); 
 
$('#example4').calendar({ 
 
    startMode: 'year' 
 
}); 
 
$('#example5').calendar(); 
 
$('#example6').calendar({ 
 
    ampm: false, 
 
    type: 'time' 
 
}); 
 
$('#example7').calendar({ 
 
    type: 'month' 
 
}); 
 
$('#example8').calendar({ 
 
    type: 'year' 
 
}); 
 
$('#example9').calendar(); 
 
$('#example10').calendar({ 
 
    on: 'hover' 
 
}); 
 
var today = new Date(); 
 
$('#example11').calendar({ 
 
    minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() - 5), 
 
    maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 5) 
 
}); 
 
$('#example12').calendar({ 
 
    monthFirst: false 
 
}); 
 
$('#example13').calendar({ 
 
    monthFirst: false, 
 
    formatter: { 
 
    date: function (date, settings) { 
 
     if (!date) return ''; 
 
     var day = date.getDate(); 
 
     var month = date.getMonth() + 1; 
 
     var year = date.getFullYear(); 
 
     return day + '/' + month + '/' + year; 
 
    } 
 
    } 
 
}); 
 
$('#example14').calendar({ 
 
    inline: true 
 
}); 
 
$('#example15').calendar();
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> 
 
<link href="https://cdn.rawgit.com/mdehoog/Semantic-UI/6e6d051d47b598ebab05857545f242caf2b4b48c/dist/semantic.min.css" rel="stylesheet" type="text/css" /> 
 
<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 
<script src="https://cdn.rawgit.com/mdehoog/Semantic-UI/6e6d051d47b598ebab05857545f242caf2b4b48c/dist/semantic.min.js"></script> 
 
    <meta charset="utf-8"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
    
 
    <div class="ui container"> 
 
    <h1>Calendar examples</h1> 
 
    
 
    <h3>Input</h3> 
 
    <div class="ui calendar" id="example1"> 
 
    <div class="ui input left icon"> 
 
     <i class="calendar icon"></i> 
 
     <input type="text" placeholder="Date/Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Date only</h3> 
 
    <div class="ui calendar" id="example2"> 
 
    <div class="ui input left icon"> 
 
     <i class="calendar icon"></i> 
 
     <input type="text" placeholder="Date"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Time only</h3> 
 
    <div class="ui calendar" id="example3"> 
 
    <div class="ui input left icon"> 
 
     <i class="time icon"></i> 
 
     <input type="text" placeholder="Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Range</h3> 
 
    <div class="ui form"> 
 
    <div class="two fields"> 
 
     <div class="field"> 
 
     <label>Start date</label> 
 
     <div class="ui calendar" id="rangestart"> 
 
      <div class="ui input left icon"> 
 
      <i class="calendar icon"></i> 
 
      <input type="text" placeholder="Start"> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div class="field"> 
 
     <label>End date</label> 
 
     <div class="ui calendar" id="rangeend"> 
 
      <div class="ui input left icon"> 
 
      <i class="calendar icon"></i> 
 
      <input type="text" placeholder="End"> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Year first</h3> 
 
    <div class="ui calendar" id="example4"> 
 
    <div class="ui input left icon"> 
 
     <i class="calendar icon"></i> 
 
     <input type="text" placeholder="Date/Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Initial value</h3> 
 
    <div class="ui calendar" id="example5"> 
 
    <div class="ui input left icon"> 
 
     <i class="calendar icon"></i> 
 
     <input type="text" placeholder="Date" value="5/30/2015 3pm"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>24-hour</h3> 
 
    <div class="ui calendar" id="example6"> 
 
    <div class="ui input left icon"> 
 
     <i class="time icon"></i> 
 
     <input type="text" placeholder="Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Month and year</h3> 
 
    <div class="ui calendar" id="example7"> 
 
    <div class="ui input left icon"> 
 
     <i class="time icon"></i> 
 
     <input type="text" placeholder="Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Year only</h3> 
 
    <div class="ui calendar" id="example8"> 
 
    <div class="ui input left icon"> 
 
     <i class="time icon"></i> 
 
     <input type="text" placeholder="Time"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Button</h3> 
 
    <div class="ui calendar" id="example9"> 
 
    <div class="ui button">Select date</div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Hover</h3> 
 
    <div class="ui calendar" id="example10"> 
 
    <div class="ui button">Hover me</div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Min/Max date</h3> 
 
    <div class="ui calendar" id="example11"> 
 
    <div class="ui input"> 
 
     <input type="text" placeholder="Date"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Day first</h3> 
 
    <div class="ui calendar" id="example12"> 
 
    <div class="ui input"> 
 
     <input type="text" placeholder="Date"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Custom format</h3> 
 
    <div class="ui calendar" id="example13"> 
 
    <div class="ui input"> 
 
     <input type="text" placeholder="Date"> 
 
    </div> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Inline</h3> 
 
    <div class="ui calendar" id="example14"> 
 
    </div> 
 
    <br/> 
 
    
 
    <h3>Implicit inline (no popup activator)</h3> 
 
    <div class="ui calendar" id="example15"> 
 
    </div> 
 
    <br/> 
 
    
 
    </div> 
 
</body> 
 
</html>

+1

おかげAbhinav。私はカレンダーから選択して、ポップアップを「クリック」することなく開くことができます。しかし、何ヶ月か何年かを選択しなければならない場合(6月や前年になるかもしれません)、それらのXpathを取得して変更するか、スクロールのXpathを取得してスクリプトに複数回追加する必要があります。 (現在のスクリプトよりもはるかに早い場合は、スクリプトを短くしておくことはできないと思います)。したがって、日付を入力することを選択したので、日付を変更してスクリプトを変更する必要があっても、「値」を更新することができます。この場合、ポップアップを閉じることができません。 – Ses

+0

ちょっとSES、遅く応答を親切に言い訳が、私が正しく理解している場合は、カレンダーのポップアップで多くのクリックを必要とする日付を入力しなければならないと、直接日付をキー入力することでこの問題を回避したい。 まあ、完全に誤解最初のクエリでクエリ! とにかく日付を入力するには、2 のコマンドを使用できます。最初に日付を入力し、次にEnterキー($ {KEY_ENTER})を押します。これは私のために働いた、それを試してみて!日付形式が正確かどうかを確認するか、データ検証エラーが発生する可能性があります。 –

+0

ありがとうAbhinav :)。 コマンドが機能し、日付の問題なしに進めることができました。 – Ses

関連する問題