私はC#webbrowserコントロールを使用して、私が扱っている商用Webサイトをナビゲートしています。ログインして特定のリストに移動します。リストは将来の仕事です。それから私はそれらの仕事に入札するためにいくつかのリンクを続けます。その過程で私は問題に遭遇しました。c#webbrowserコントロールを使用して動的に生成されたオプション要素を選択する
フォームの1つに2つの選択要素(ドロップダウンリスト)があります。これらのリストのオプションは、いくつかのjavascriptスクリプトを使用して動的に生成されます。ほとんどのスクリプトはソースで利用できます。
ページソースコードには何も選択できません。オプションはページを手動でナビゲートするときに動的に表示されますが、WebブラウザでC#を使用してナビゲートしようとしています。
ここにフォームがあります。あなたは、2つの選択要素がnoオプションの子供を持っていない見ることができるように
<form name="frm1" id="frm1" action="/tab/Transport/LoadAssigned2.asp" method="post">
<table class="section">
<tr>
<td>Name</td>
<td>
<input type="text" name="s_name" id="s_name" size="25" maxlength="50"></td>
</tr>
<tr>
<td>Fax</td>
<td>
<input type="text" name="txtFaxNumber" id="txtFaxNumber" size="25" maxlength="15" value="1234567890"></td>
</tr>
<tr>
<td>Email</td>
<td>
<input type="text" name="txtEmail" id="txtEmail" size="25" maxlength="225"></td>
</tr>
<tr>
<td>Pickup will occur on or before</td>
<td>
<select name="stransp_pickup_date" id="stransp_pickup_date" style="width: 173px;" onchange="setDeliveryDate()">
</select>
</td>
<tr>
</tr>
<td>Delivery will occur on or before</td>
<td>
<select name="stransp_delivery_date" id="stransp_delivery_date" style="width: 173px;">
</select>
</td>
</tr>
</table>
<input type="hidden" name="nload_id" id="nload_id" value="123456789">
</form>
を - (と私はそれがひどく形成されて知っているが、それは私のものではありません、私はスタイルを切り取り、テキストの一部を変更しました)。これらはsetDeliveryDate始まる、スクリプトによって作成されます。
function setDeliveryDate(){
var distance = 226;
var delivery = $("#stransp_delivery_date");
var pickupDate = $("#stransp_pickup_date option:selected").val();
$("#stransp_delivery_date option").remove();
delivery.append("<option value='-1'>SELECT DATE</option>");
if(distance <=200){
generateDeliveryDates(delivery,pickupDate,2);
}else if(distance >=201 && distance <= 400){
generateDeliveryDates(delivery,pickupDate,3);
}else if(distance >=401 && distance <= 700){
generateDeliveryDates(delivery,pickupDate,4);
}else if(distance >=701 && distance <= 1400){
generateDeliveryDates(delivery,pickupDate,5);
}else if(distance >=1401 && distance <= 1800){
generateDeliveryDates(delivery,pickupDate,6);
}else if(distance >=1801 && distance <= 2200){
generateDeliveryDates(delivery,pickupDate,7);
}else if(distance >=2201 && distance <= 2500){
generateDeliveryDates(delivery,pickupDate,8);
}else if(distance >=2501 && distance <= 4000){
generateDeliveryDates(delivery,pickupDate,9);
}
}
そしてgenerateDeliveryDates機能は次のとおりです。
function generateDeliveryDates(delivery,pickupDate,index){
for (var i = 0; i < index; i++) {
if (moment(pickupDate).add('days', i).format('dddd') == 'Sunday') {
index++;
delivery.append("<option value='" + moment(pickupDate).add('days', i).format('MM/DD/YYYY') + "'>" + moment (pickupDate).add('days', i).format('dddd')+" - "+ moment(pickupDate).add('days', i).format('MM/DD/YYYY') + "</option>");
} else {
delivery.append("<option value='" + moment(pickupDate).add('days', i).format('MM/DD/YYYY') + "'>" + moment (pickupDate).add('days', i).format('dddd')+" - "+ moment(pickupDate).add('days', i).format('MM/DD/YYYY') + "</option>");
}
};
}
IFIは、スクリプトの多くを示しておくことができます - しかし、私は考えを望んでいることは明らかです。 select要素の下のオプションは、最初のselect要素のonchangeイベントに基づいて作成されます。これは日付のリストです。
私がしたいことは、どちらの場合でも最後の日付オプションを選択することですが、存在する前にそれを行う方法はわかりません。また、上記のように、リストのオプション数は距離によって異なります。
これらの要素にページソースコードで表示されない場合はどうすればアクセスできますか?
非常に助けや指導の感謝しています。