Веб-браузер находит привязку и автоматически нажимает на c#

#c# #asp.net

#c# #asp.net

Вопрос:

Я создаю один инструмент, в котором я использовал C # browser control, который автоматически регистрируется в IRCTC и бронирует билет. все работает нормально, за исключением одной страницы. я не могу щелкнуть через браузер, как я могу найти привязку и щелкнуть через браузер C #.Ниже приведен HTML:

 <table class="rf-dt width100" id="avlAndFareForm:trainbtwnstns">
            <colgroup span="16">
            </colgroup>
            <thead class="rf-dt-thd" id="avlAndFareForm:trainbtwnstns:th">
                <tr class="rf-dt-shdr" id="avlAndFareForm:trainbtwnstns:ch">
                    <th id="avlAndFareForm:trainbtwnstns:j_idt261" scope="col" class="rf-dt-shdr-c">
                        Train No.
                        <div id="up" style="float: right; display: none;">
                        </div>
                        <div id="down" style="float: right; display: none;">
                        </div>
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt265" scope="col" class="rf-dt-shdr-c">
                        Train Name
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt268" scope="col" class="rf-dt-shdr-c">
                        From
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt271" scope="col" class="rf-dt-shdr-c">
                        Departure
                        <div id="up" style="float: right; display: block;" class="up-hdr">
                        </div>
                        <div id="down" style="float: right; display: none;">
                        </div>
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt275" scope="col" class="rf-dt-shdr-c">
                        To
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt278" scope="col" class="rf-dt-shdr-c">
                        Arrival
                        <div id="up" style="float: right; display: none;">
                        </div>
                        <div id="down" style="float: right; display: none;">
                        </div>
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt282" scope="col" class="rf-dt-shdr-c">
                        Dist.(Km)
                        <div id="up" style="float: right; display: none;">
                        </div>
                        <div id="down" style="float: right; display: none;">
                        </div>
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt286" scope="col" class="rf-dt-shdr-c">
                        Travel Time
                        <div id="up" style="float: right; display: none;">
                        </div>
                        <div id="down" style="float: right; display: none;">
                        </div>
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt290" scope="col" class="rf-dt-shdr-c">
                        M
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt293" scope="col" class="rf-dt-shdr-c">
                        T
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt296" scope="col" class="rf-dt-shdr-c">
                        W
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt299" scope="col" class="rf-dt-shdr-c">
                        T
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt302" scope="col" class="rf-dt-shdr-c">
                        F
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt305" scope="col" class="rf-dt-shdr-c">
                        S
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt308" scope="col" class="rf-dt-shdr-c">
                        S
                    </th>
                    <th id="avlAndFareForm:trainbtwnstns:j_idt311" scope="col" class="rf-dt-shdr-c">
                        Class
                    </th>
                </tr>
            </thead>
            <tbody class="rf-dt-b" id="avlAndFareForm:trainbtwnstns:tb">
                <tr class="rf-dt-r" id="avlAndFareForm:trainbtwnstns:9">
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:9:j_idt261">
                        <a onclick="trainScheFunc('12141','CSTM','Thu Jul 03 00:00:00 IST 2014')" href="#">12141</a>
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt265">
                        RAJENDRA NGR EXP
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt268">
                        CSTM
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt271">
                        23:25
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt275">
                        JBP
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt278">
                        14:15
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt282">
                        997
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt286">
                        14:50
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt290">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt293">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt296">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt299">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt302">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt305">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt308">
                        Y
                    </td>
                    <td class="rf-dt-c" id="avlAndFareForm:trainbtwnstns:6:j_idt311">
                        <a onclick="availFareEnq(this,'12141','Thu Jul 03 00:00:00 IST 2014','1A','CSTM','JBP',true)">
                            1A</a> <a onclick="availFareEnq(this,'12141','Thu Jul 03 00:00:00 IST 2014','2A','CSTM','JBP',true)">
                                2A</a> <a onclick="availFareEnq(this,'12141','Thu Jul 03 00:00:00 IST 2014','3A','CSTM','JBP',true)">
                                    3A</a> <a onclick="availFareEnq(this,'12141','Thu Jul 03 00:00:00 IST 2014','SL','CSTM','JBP',true)">
                                        SL</a> <span id="ttf" style="display: none;">O,</span>
                    </td>
                </tr>
            </tbody>
            <tbody id="avlAndFareForm:trainbtwnstns:sc">
                <tr>
                    <td style="display: none">
                        <script type="text/javascript">                        new RichFaces.ui.DataTable("avlAndFareForm:trainbtwnstns", { "ajaxEventOptions": {} })</script>
                    </td>
                </tr>
            </tbody>
        </table>
  

здесь я хочу нажать на нижеприведенное через браузер. я не могу найти привязку ниже: пожалуйста, помогите мне:

 <a onclick="availFareEnq(this,'12141','Thu Jul 03 00:00:00 IST `2014','SL','CSTM','JBP',true)"> SL</a>.
  

Ответ №1:

Вы могли бы ввести html на страницу, загруженную в элемент управления браузера, и загрузить jquery, затем ввести javascript тем же способом, который использует jquery для поиска тега привязки и щелчка по нему.

 HtmlElement head = idOfBrowserControl.Document.GetElementsByTagName("head")[0];

HtmlElement script1 = idOfBrowserControl.Document.CreateElement("script");
script.SetAttribute("type", "text/javascript");
script.SetAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js");

HtmlElement script2 = idOfBrowserControl.Document.CreateElement("script");
script.SetAttribute("type", "text/javascript");
script.InnerHtml = "function clickAnchor() { $($('a', '#avlAndFareForm:trainbtwnstns:6:j_idt311')[0]).click();}}";

head.AppendChild(script1);
head.AppendChild(script2);
  

Затем, когда вы захотите щелкнуть по ней, выполните

 idOfBrowserControl.Document.InvokeScript("clickAnchor");
  

Вам не нужно вводить jQuery, я просто делаю это, потому что я использую jQuery для всего… Это проще.

Комментарии:

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

2. хм, я получаю ошибку в скрипте. innerHTML = «функция clickAnchor() { $(‘#avlAndFareForm:trainbtwnstns:6:j_idt311’).click();}»; строка. «Свойство не поддерживается в этом типе HTMLElement».

3. Я много пробовал. я не могу найти эту привязку, но она не работает. Пожалуйста, помогите мне.

4. О, моя ошибка, этот идентификатор является идентификатором таблицы. У привязки нет идентификатора, поэтому я использую таблицу, меняю ее на $($(‘a’, ‘#avlAndFareForm:trainbtwnstns: 6:j_idt311’)[0]).щелкните();}, Который найдет первый тег привязки в столбце таблицы с идентификатором avlAndFareForm: trainbtwnstns: 6:j_idt311 и щелкните по нему. Если вам нужно щелкнуть по определенному, вам придется искать на основе текста тега achor. В этом случае вам нужно будет написать функцию java script, которая перебирает все теги привязки в столбце таблицы и возвращает тот, который соответствует желаемому тексту. и т.д.

5. Если вам нужна дополнительная помощь, я предлагаю вам ознакомиться с руководствами по jQuery и javascript.