【发布时间】:2014-01-11 12:10:53
【问题描述】:
我正在尝试创建一个基本上执行以下操作的程序:
- 打开一个网址
- 进入第一个表单(网络表单)
- 提交并遵循表单操作
- 点击下一页上的网址
- 然后退出
到目前为止,我已经尝试使用事件处理程序 (DocumentCompleted),然后通过 wb.Document.Forms[0] 访问表单,然后使用 SetAttribute。这不起作用,因为我几乎登录了,所以它只在最后提交了表单(因为那是在 DocumentCompleted 事件下),在为多个帐户加载了所有登录信息之后(是的,我正在登录多个帐户)。有任何想法吗?我迷路了。我在下面提供了一个我尝试过的基本示例。我还没有点击下一页上的链接,因为我还没有成功登录。起初我在没有事件处理程序的情况下尝试了这个,但后来我意识到它是必需的,否则 web.Document 总是返回 null。然后我尝试在 foreach 中添加事件处理程序,并在事件的函数中添加 if 语句。正如我之前所说,这仅在最后起作用,即使在那之后,我也不相信登录成功,尽管我不是 100% 的。
foreach(login in logins){
if (web.Document != null)
{
var form = web.Document.Forms[0];
var input = form.Children[0];
input.SetAttribute("value", "input value");
form.InvokeMember("submit");
}
}
【问题讨论】:
-
@user3184111,这背后的目标是什么:GUI 测试自动化,还是web-scrapping?
-
废话不多说。我已经到了现在我可以修改数据等的地步,但它在所有用户循环之后才会这样做。好吧,假设我所有的用户都加入了,最后它会像 40 个 WebBrowser_DocumentCompleted 实例一样打开,但我需要它在用户之间完成每一个,而不是最后一次。
-
检查 this 以获取您可以根据需要进行调整的示例代码。