在C#winform项目中,我使用webbrowser对象登录网站,导航到特定列表,然后使用该列表。登录后,我需要从表单中的一些下拉选择选项中进行选择,然后提交表单(没有提交元素 - 通过单击以onclick事件为基础的图像来提交表单,全部如下所示。
这是目标网站上代码的缩写版本(我已经将它缩短了一点 - 我想我已经把所有相关内容都删掉了。我也删除了所有样式以专注于HTML和javascript)。最后一点 - 我找了但找不到函数objForm.submit
:
<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>
我尝试过:
我的第一个想法是为我想要选择的三件事中的第一件和第二件设置属性,如下所示:
webBrowser1.Document.GetElementById("origin_location")
.SetAttribute("value", "4");
webBrowser1.Document.GetElementById("destination_location")
.SetAttribute("value", "4");
我不确定我是否正确地做了那些2,而对于第三个,我没有ID,所以我不知道如何选择它。
最后,我想单击锚定的图像或调用单元格中的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>
可能很明显,我是一个相当新的编码员,感谢任何帮助或指导。
答案 0 :(得分:0)
你的权利,你不能使用getElementbyID Methode访问第三个,但是可以用这个来获取这个HTML元素:
webBrowser1.Document.getElementsByTagName("select");
这应该返回一个HtmlElementCollection。因为只有三个“select”元素,所以它必须是此集合中的第三个元素。
要执行Click,请使用相同的getElementbyTagName Methode,但使用“a”。如果你有正确的元素你执行点击:
elementname.InvokeMember("click");
Tipp:设置创建集合的断点,然后在调试模式下启动。看看是否成功收集了元素:)