WebBrowser中能否获取js弹出对话框上的内容?

thoughter 2009-08-12 09:24:44
我在做一个winform,用来往网页(框架结构)上自动填写内容并提交,用的是ExtendedWebBrowser2,每次运行需要进行几十次的批量录入,每次录入也有很多步骤
现在发现其中一个步骤中,点击保存按钮后,会弹出一个js对话框提示结果,但结果可能是“保存成功”,也可能是“保存失败”,如果失败,等一段时间再点一次保存就可能成功了,否则后续操作将无法继续下去

现在的问题是,能否使程序获得网页弹出对话框的内容用来判断保存结果?
临时处理的话可以加一个对话框进行人工确认,但毕竟效率太低且容易出错

我现在主要就是找不到获取此内容的方法,另外弹出对话框时,程序运行似乎是暂停的,即使有方法是不是也一定要用多线程?
PS:如果能直接屏蔽此js对话框的显示的话效果更好(当然前提是能获取返回的结果)
...全文
1577 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
钱币老顽童 2011-11-12
  • 打赏
  • 举报
回复
aloneone 2009-09-22
  • 打赏
  • 举报
回复
与我遇到的问题差不多,关注
無名小伙 2009-09-16
  • 打赏
  • 举报
回复
up
蒋晟 2009-08-13
  • 打赏
  • 举报
回复
实现IDocHostShowUI.ShowMessage
http://groups.google.com/group/csexwb
thoughter 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiangsheng 的回复:]
实现IDocHostShowUI.ShowMessage
http://groups.google.com/group/csexwb
[/Quote]
网上稍微看了下,可能确实是解决这个问题的好办法
不过暂时用这个方法来处理了
http://zhidao.baidu.com/question/78126445.html
等有问题再研究吧
谢谢
shrinerain 2009-08-12
  • 打赏
  • 举报
回复
HTMLTestSession.Objects.Dialog().WinObjects.Button("确定").Click();
thoughter 2009-08-12
  • 打赏
  • 举报
回复
从其演示代码来看,仅仅是实现了自动填写和点击的功能,这我已经做到了
而且,没有提供源码,一是看不到是否实现了我需要的功能,二是总不能让我把已经写完的东西全部推翻吧?……
:(
shrinerain 2009-08-12
  • 打赏
  • 举报
回复
feifeiyiwen 2009-08-12
  • 打赏
  • 举报
回复
up
thoughter 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shrinerain 的回复:]
这个是用于操作IE, 不能操作嵌入winform的webbrowser.
[/Quote]
问题是,我已经说得很清楚了,“我在做一个winform,用来往网页(框架结构)上自动填写内容并提交,用的是ExtendedWebBrowser2”………………
shrinerain 2009-08-12
  • 打赏
  • 举报
回复
也就是说, 程序是直接操作Windows的Internet Explorer浏览器.

另外, 不要放在多线程中运行.

shrinerain 2009-08-12
  • 打赏
  • 举报
回复
这个是用于操作IE, 不能操作嵌入winform的webbrowser.
thoughter 2009-08-12
  • 打赏
  • 举报
回复
不太熟悉怎么用,先试了一下:

Thread th;
string sssss;
private void btnAdd_Click(object sender, EventArgs e)
{
th=new Thread(tmp);
sssss = this.Text;
th.Start();
}
private void tmp()
{
try
{
Thread.Sleep(3000);
MessageBox.Show("Clicking");
HTMLTestSession test = new HTMLTestSession();
test.Browser.Find(sssss);
test.Objects.Dialog().WinObjects.Button("确定").Click();
MessageBox.Show("Clicked");
}
catch
{
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
th.Abort();
}

打开程序后先按btnAdd,然后在3秒内搞出来一个对话框等看程序的反应,结果就是显示了"Clicking"就毫无反应了……
是我用法不对吗?感觉现在怎么获取我的那个webbrower都不知道,更不用说该怎么取得对话框的内容了,还望不吝赐教

111,096

社区成员

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

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

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