【发布时间】:2017-01-23 21:46:56
【问题描述】:
在 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");
我不确定我是否正确地做这两个,第三个,没有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>
很明显,我是一个相当新的编码员,感谢任何帮助或指导。
【问题讨论】:
-
"我寻找但没有找到函数
objForm.submit"——这是您的代码在提交表单时尝试调用的 JavaScript 函数。如果它不存在,您必须创建它。此外,由于您在它之后返回 false,它永远不会被成功调用。<a href="javascript: void 0;" onclick="objForm.submit(); return false;">应该只是<a href="javascript: void 0;" onclick="objForm.submit();">:) -
谢谢。我没有编写网站 - 我只是粘贴了页面源代码中的内容。我正在尝试创建一个程序来登录并抓取我工作的列表。我尝试提交的表单定义了创建列表的查询。此外 - 更正 - 来源确实包含以下声明:objForm.onSubmit = _customOnSubmit;还有一个 _customOnSubmit 函数。如果有帮助,我可以粘贴该信息 - 我对调用该函数的想法是简单地执行以下操作:webBrowser1.Document.InvokeScript("objForm.submit");
标签: javascript c# html forms webbrowser-control