使用webBrowser登录网站后如何获取新页面的元素

lsun026 2010-01-10 07:35:14
我想用webbrowser写了个自动登录论坛后然后自动发帖
自动登录功能已经写好了,但是在写自动发帖时,检索登录后页面元素时怎么也找不到,不知道怎么解决,望高手帮忙解决,最好带个小例子
...全文
419 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
深夜航船 2010-10-25
  • 打赏
  • 举报
回复
这个问题搞的我都崩溃了
xiaozhi170 2010-07-27
  • 打赏
  • 举报
回复
学习我也遇到这个瓶颈了!~
mngzilin 2010-01-10
  • 打赏
  • 举报
回复
382748635@qq.com
lsun026 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mngzilin 的回复:]
在你的DocumentCompleted事件中第一行上写
C# codeif(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)return;

否则会错误。
原因:WebBrowser时载入一个页面后DocumentCompleted事件会被调用2次,第一次是Intercative,第二次是Complete。
MSDN上面对两个状态值的解释是:
Complete 该控件已完成新文档及其所有内容的加载。
Interactive 该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。

所以,为了防止重复激活调用事件,还是只取一次的好,我取的是Complete
于是会在DocumentCompleted的相应方法中写入
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete) return;


[/Quote]

还是不行,大哥你QQ或邮箱多少,我把源程序发过去给你看看
mngzilin 2010-01-10
  • 打赏
  • 举报
回复
在你的DocumentCompleted事件中第一行上写
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete) return;


否则会错误。
原因:WebBrowser时载入一个页面后DocumentCompleted事件会被调用2次,第一次是Intercative,第二次是Complete。
MSDN上面对两个状态值的解释是:
Complete 该控件已完成新文档及其所有内容的加载。
Interactive 该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。

所以,为了防止重复激活调用事件,还是只取一次的好,我取的是Complete
于是会在DocumentCompleted的相应方法中写入
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete) return;

fantcy 2010-01-10
  • 打赏
  • 举报
回复
楼主这是我代码 呵呵好的话给分啊
窗体load代码:
xinweb.Navigate(*网址*);
button中代码:
HtmlElement ClickBtn = null;
string web = "*网址*";//这个与上面网址相同
HtmlDocument doc = xinweb.Document;
bool a = doc.Url.OriginalString.Equals(web);//注意这个地方是用的OriginalString原始字符串,如果不是原始字符串会与原来字符串不相等!
if (a) //登陆页面
{
for (int i = 0; i < doc.All.Count; i++)
{
if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
{
switch (doc.All[i].Name)
{
case "网页代码中用户名名字":
doc.All[i].InnerText = "user01";
break;
case "网页代码中密码的名字":
doc.All[i].InnerText = "mypass";
break;
case "B1":
ClickBtn = doc.All[i]; //提交按钮
break;
}
}
}
//ClickBtn.InvokeMember("Click"); //执行按扭操作
}
lsun026 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cuike519 的回复:]
这个东西找页面元素和JS差不多,js里面那个几个GetElementByXXX的方法应该都有。

如果找不到请检查文档是否正确,并且拼写是否正确。
[/Quote]
我的意思是现在我用程序从A页面自动登录,登录成功后页面跳转到B,在DocumentCompleted事件完成后程序自动执行B页面的元素操作(比如站内搜索功能或注册激活功能什么的),但不知道如何获取到B页面正确的元素
(webBrowser 显示的界面都没问题,手动在上面操作也没问题)
cuike519 2010-01-10
  • 打赏
  • 举报
回复
这个东西找页面元素和JS差不多,js里面那个几个GetElementByXXX的方法应该都有。

如果找不到请检查文档是否正确,并且拼写是否正确。
lsun026 2010-01-10
  • 打赏
  • 举报
回复
但是就是提示找不到指定的页面元素
lsun026 2010-01-10
  • 打赏
  • 举报
回复
比如我用这方法在hotmail邮箱里进行搜索邮件的功能
//搜索方法
private void Search(string str)
{
HtmlDocument document = this.webBrowser1.Document;
document.GetElementById("productSearchTerms").InnerText = str;
document.GetElementById("psbtn").InvokeMember("click");
}
mngzilin 2010-01-10
  • 打赏
  • 举报
回复
你怎么检索的?代码发上来

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧