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

Как использовать элемент управления C# webbrowser для выбора из выпадающих списков и вызова скрипта отправки


В проекте C# winform я использую объект webbrowser для входа на веб-сайт, перехода к определенному списку и последующей работы с этим списком. После входа в систему мне нужно выбрать один из нескольких выпадающих вариантов выбора, которые находятся внутри формы, а затем отправить форму (нет элемента submit - отправка формы выполняется нажатием на изображение, привязанное к событию onclick, все как показано ниже.

Вот сокращенная версия кода на целевом сайте (я его совсем немного сократил - думаю, что оставил все, что имеет отношение к делу. Я также вырезал все стили, чтобы сосредоточиться на HTML и javascript). Вот код:

<form name="frm1" id="frm1" action="/tab/formaction.asp" method="post">
<table>
<tr><td> Locations</td></tr>
<tr><td>
<table>
    <tr>
        <td>Origin</td>
        <td>
            <select title="Choose Origin Location(s)" name="origin_location"
             id="origin_location" multiple="multiple">
                <option value="0">ANYWHERE</option>
        <option value="1">North West</option>
        <option value="2">North Central</option>
        <option value="3">Great Lakes</option>
        <option value="4">North East</option>
        <option value="5">South West</option>
    </select>
        </td>
    </tr>
    <tr>
        <td>Destination</td>
        <td>
            <select title="Choose Destination Location(s)"
              name="destination_location" id="destination_location"
               multiple="multiple">
                <option value="0">ANYWHERE</option>
        <option value="1">North West</option>
        <option value="2">North Central</option>
        <option value="3">Great Lakes</option>
        <option value="4">North East</option>
        <option value="5">South West</option>
    </select>
        </td>
    </tr>

    <tr>
        <td>Number of People</td>
        <td>
            <select name="people">
        <option value="1">1+</option>
                    <option value="2">2+</option>
                    <option value="3">3+</option>
                    <option value="4">4+</option>
            </select>
            <select style="visibility:hidden;" name="equality">
                <!--
                <option value="<=">Less than or Equal</option>
                <option value="=">Equal</option>
                !-->
                <option value=">=">Greater than or Equal</option>
            </select>
        </td>
    </tr>
    <tr>
        <td>
            <a href="javascript: void 0;" onclick="objForm.submit(); return
                 false;">
                <img src="/tab/images/buttons/submit.gif" border="0"
                    WIDTH="71" HEIGHT="21">
            </a>
        </td>
    </tr>
</table>
</td></tr></table>
<input type="hidden" name="origin_text" id="origin_text">
<input type="hidden" name="origin_region_id" id="origin_region_id">
<input type="hidden" name="origin_state_id" id="origin_state_id">
<input type="hidden" name="origin_city_id" id="origin_city_id">

<input type="hidden" name="destination_text" id="destination_text">
<input type="hidden" name="destination_region_id"
      id="destination_region_id">
<input type="hidden" name="destination_state_id" id="destination_state_id">
<input type="hidden" name="destination_city_id" id="destination_city_id">

<input type="hidden" name="equality_text" id="equality_text">
<input type="hidden" name="sZip" id="sZip">
</form>


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

My first thought was to set attributes for the first and second of the three things I want to choose, like this:

 <pre>webBrowser1.Document.GetElementById("origin_location")
   .SetAttribute("value", "4");

 webBrowser1.Document.GetElementById("destination_location")
    .SetAttribute("value", "4");


Я не уверен, что делаю эти 2 Правильно, а для третьего идентификатора нет, поэтому я понятия не имею, как его выбрать.

Наконец, я хочу щелкнуть по закрепленному изображению или вызвать скрипт onclick в ячейке, которая читает:

<a href="javascript: void 0;" onclick="objForm.submit(); return false;">
    <img src="/tab/images/buttons/submit.gif" border="0" WIDTH="71"
     HEIGHT="21">
</a>

Как может быть очевидно, я довольно новый кодер и ценю любую помощь или руководство.

1 Ответов

Рейтинг:
2

#realJSOP

Вам не нужно выбирать элементы управления. Вам просто нужно знать правильный формат url/querystring/contents и отправить его вместе с WebClient объект.


Ken-in-California

Джон, спасибо за ответ. У меня есть некоторый предыдущий опыт использования объектов HTTPWebRequest и WebClient. И я нашел отличный инструмент, который должен сделать это легко - скрипач запрос кода.
Но у меня были проблемы с файлами cookie SSL/TSL certs. Честно говоря, я их не понимаю и не нашел в интернете ничего, что действительно учит, как они работают. Я нашел несколько примеров кода, но я нахожу его запутанным. (Например, большая часть кода создает нечто, называемое кэшем учетных данных, а затем использует свойства для формирования веб - вызовов, но строки, которые я в конечном итоге собираю, неверны).
Поэтому в предыдущем проекте я смог избежать всего этого, используя элемент управления webbrowser.
С учетом сказанного я хочу сделать свою следующую версию как веб-сервис, поэтому мне нужно будет разобраться в этом - но на данный момент я хочу удалить версию 1 из своего списка дел.
Я ценю намеки и идеи....