c# webBrowser如何获取弹出提示框内容并模拟点击?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# webBrowser如何获取弹出提示框内容并模拟点击?相关的知识,希望对你有一定的参考价值。

如弹出一个对话框:
您输入的验证码不正确!
点确定可以退出。
如何获得该对话框里面的内容,并模拟点击操作呢?

htmlDocument
doca
=
this.webBrowser1.Document;
//把当前的webBrowser1显示的文档实例化成一个HtmlDocument对象
for
(int
i
=
0;
i
<
doca.All.Count;
i++)
//循环查找这个对象的每一个元素

if
(doca.All[i].TagName
==
"A")
//如果这个元素是A

HtmlElement
myelement
=
doca.All[i];
//就把这个元素实例化成一个HtmlElement对象
if
(myelement.OuterText
==
"下一页")
//如果这个元素的文字是“下一页"

myelement.InvokeMember("click");
//对这个元素进行点击


参考技术A HtmlDocument doca = this.webBrowser1.Document; //把当前的webBrowser1显示的文档实例化成一个HtmlDocument对象
for (int i = 0; i < doca.All.Count; i++) //循环查找这个对象的每一个元素

if (doca.All[i].TagName == "A") //如果这个元素是A

HtmlElement myelement = doca.All[i]; //就把这个元素实例化成一个HtmlElement对象
if (myelement.OuterText == "下一页") //如果这个元素的文字是“下一页"

myelement.InvokeMember("click"); //对这个元素进行点击


参考技术B 用API函数,本人以前做个自动投票机程序遇到过此问题,模拟鼠标点击!本回答被提问者采纳 参考技术C 写一个图像识别系统,能够辨认图片验证码,但是这个基本上是不肯能的。 参考技术D feiyangqingyun太NB了

C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?

想实现qq音乐网页版自动登录功能,但是不知道怎么用webBrowser控件获取对应的网页元素。之前别的网页可以用下面的方式获取成功,但是这个qq音乐网页不行了,请大神指教!
以前是这样做的,如图1:
HtmlElement user = webBrowser1.Document.All["username"];//获取账号文本框,ID=username
HtmlElement password = webBrowser1.Document.All["password"];//获取密码文本框,ID=password
HtmlElement LoginButton = webBrowser1.Document.All["sso_login"];//获取登录按钮,ID=sso_login
user.SetAttribute("value","abc");//给账号文本框内容设置为“abc”password.SetAttribute("value",“*123” );//给密码文本框内容设置为“*123”
LoginButton.InvokeMember("click");//调用按钮的点击事件

现在qq音乐网页同样方法不行了,如图2

QQ音乐登录的方式好像是API的方式,给你两个方案

1、API方式:然后输入对应的参数,你就可以登录成功,这时你就可以做自己的想做的事了

2、模拟点击(selenium)方式:即使利用seleium模拟鼠标点击网页,实现登录,这个方式属于笨拙的方式

注意:有时候可能出现需要输入验证码,这时你就需要识别验证码,给你推荐 tesseract-ocr 这个插件,源码地址tesseract-orc  不明白的留言吧

追问

1、API方式指的是啥呀?可以具体点不?
2、selenium方式,是不是运行软件的时候,自己的鼠标就不能乱动了?
3、验证码还没进行到这一步,只求先解决能输入帐号密码的功能就行

参考技术A 我没用过你这种方法,我们一般用cookie并进行加密处理,登录时添加验证若存在的取出添加到标签上 参考技术B 这个应该是受JS div 标签影响 ,就好比 有时候我们去一个母界面去取 子界面一样应该是取不到追问

那有什么其他方法吗?还请指教了!

追答

指教谈不上。尝试一下获得class属性值的看看有没有什么收获

追问

之前也用过遍历className=inputstyle来找,但是也不行,结果值没有等于这项的

追答

不好意思 刚刚看见 如果实在不能 控制 能不能尝试脚本控制

参考技术C 我觉得是因为qq的是个弹框,你代码执行的时候,弹框还没出现,所以要循环等待?追问

你好,我是把弹框点开后,所有界面出现了,我再去用代码找那些元素的,但是不行。这种弹窗是有什么别的特殊方法吗?求指教!

追答

你把现有代码发来看看(最好是放github)

追问

我就是在winform窗体中,用webBrowser控件打开y.qq.com,然后把登录界面手动点开,再在一个按钮里面加下面代码。只不过支行完,都是没有值,元素都是Null
HtmlElement user = webBrowser1.Document.All["u"];
HtmlElement password = webBrowser1.Document.All["p"];
HtmlElement LoginButton = webBrowser1.Document.All["login_button"];
LoginButton.InvokeMember("click");

追答

共享代码调试

以上是关于c# webBrowser如何获取弹出提示框内容并模拟点击?的主要内容,如果未能解决你的问题,请参考以下文章

c#中的文本框里怎么判断输入的内容是啥类型

C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?

C# webBrowser1 获取提交后网页的内容

怎么获取提示框的返回值(C# 、asp.net、webform)

Delphi 获得Webbrowser弹出对话框的信息

C# CefSharp 如何获取当前页的URL