#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.