Ken-in-California Ответов: 0

Могу ли я выбрать динамически генерируемый элемент option с помощью элемента управления webbrowser C#


Я использую элемент управления C# webbrowser для навигации по коммерческому веб-сайту, с которым работаю. Я вхожу в систему и перехожу к определенному списку. Список-это перспективные рабочие места. Затем я продолжаю просматривать некоторые ссылки, чтобы сделать ставку на эти вакансии. В процессе я столкнулся с проблемой.

На одной из форм есть 2 элемента выбора (выпадающие списки). Параметры в этих списках генерируются динамически с помощью некоторых скриптов javascript , большинство из которых доступны в исходном коде.

В исходном коде страницы выбирать нечего. Параметры отображаются динамически при навигации по странице вручную, но я пытаюсь перемещаться по ней с помощью c# в веб-браузере.

Вот форма. (Я вырезал стили и изменил часть текста - и я знаю, что он плохо сформирован, но он не мой)

<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"
                 onchange="setDeliveryDate()">
                </select>
            </td>
        <tr>
        </tr>
            <td>Delivery will occur on or before</td>
            <td>
                <select name="stransp_delivery_date" id="stransp_delivery_date">
                </select>
            </td>
        </tr>
    </table>
    <input type="hidden" name="nload_id" id="nload_id" value="123456789">

</form>


Как вы можете видеть, два элемента select не имеют дочерних элементов option. Они создаются скриптами, начиная с 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>");
        }
    };
}


Если бы я мог продолжать показывать больше сценариев - но я надеюсь, что идея ясна. Параметры выбора элементов, созданных на основе события onChange в первом выберите элемент. Это список дат.

Что я хочу сделать,так это выбрать последний из вариантов даты в обоих случаях - но я не вижу, как это сделать до того, как он появится. Кроме того, количество вариантов в списке варьируется в зависимости от расстояния, как вы можете видеть выше.

Очень благодарен за любую помощь или руководство.

Что я уже пробовал:

Ничего - в полной растерянности.

0 Ответов