求大神啊,关于webbrowser给文本框赋值的问题

cz49009 2015-10-09 02:30:00
需要加载的网站是http://www.shenzhenair.com/uiue/。

我想要做的是模拟人员输入出数据,查询出机票的信息。
我用webBrowser1.Document.All["orgCity"]..SetAttribute,还有webBrowser1.Document.GetElementById("").InnerText两种都试过,发现值是写进去,但是就出现了一瞬间,然后文本框就又变成请输入城市这几个字了。
求大神指教,怎么解决
...全文
375 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cz49009 2015-10-10
  • 打赏
  • 举报
回复
引用 12 楼 Roy_se7en 的回复:
1. 你给 textbox 赋值是在什么时候? 2. 你发现值是写进去了,是如何发现的?是在什么时候发现的?
这是从百度上找得,通过count的加减判断是否页面加载是否彻底完成 private void webBrowser1_completed(object sender, WebBrowserDocumentCompletedEventArgs e) { count = count - 1; if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && count == 0) { HtmlElement fromCity = webBrowser1.Document.GetElementById("fromCity"); fromCity.Focus(); fromCity.SetAttribute("value", "深圳"); } } 至于值有没有写进去,应该来说只是看的话,在页面上会看到深圳两个字出现了一下,然后就没有了
哋岼線 2015-10-10
  • 打赏
  • 举报
回复
引用 13 楼 cz49009 的回复:
[quote=引用 12 楼 Roy_se7en 的回复:] 1. 你给 textbox 赋值是在什么时候? 2. 你发现值是写进去了,是如何发现的?是在什么时候发现的?
这是从百度上找得,通过count的加减判断是否页面加载是否彻底完成 private void webBrowser1_completed(object sender, WebBrowserDocumentCompletedEventArgs e) { count = count - 1; if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && count == 0) { HtmlElement fromCity = webBrowser1.Document.GetElementById("fromCity"); fromCity.Focus(); fromCity.SetAttribute("value", "深圳"); } } 至于值有没有写进去,应该来说只是看的话,在页面上会看到深圳两个字出现了一下,然后就没有了[/quote] 我简单测试了下你这个问题。webBrowser1状态为Completed时也只是加载Document框架。至于异步ajax,或者js 可能并没有完 成, 因为没有源码,有源码找起来也会简单,所以建议楼主从 赋值“请输入城市”(textbox最早value是'输入城市名称')的方式和时间去找问题...
cz49009 2015-10-10
  • 打赏
  • 举报
回复
引用 14 楼 ajianchina 的回复:
你现在可能走的是一条完全错误的道路,不要总盯着GetElementById来取得元素来赋值,你要研究一下这个网站的js工作流程,他最终可能不是通过取域值来提交的,我看像是通过文本框鼠标事件来触发js函数,接着让你来选择城市,这步下去可能是将选择结果存入js变量,最后将变量交给域来提交,那个文本框填什么可能根本没鸟用,只是让使用者看看城市名字而已,因为航班往来城市是固定的,不是说你想填什么就填什么,你自己想想是不是呢?你填个天堂或地狱,你说会是什么结果? 如果你研究了他的js流程发现确实是这样的,那么你该做的是通过向webbrowser注入一段用于赋值的js代码并执行,然后就可直接提交,文本框都可以不用管。
多谢,我今天早上一来就没有跟昨天一样纠结赋值的事情了,在分析页面的JS
ajianchina 2015-10-10
  • 打赏
  • 举报
回复
你现在可能走的是一条完全错误的道路,不要总盯着GetElementById来取得元素来赋值,你要研究一下这个网站的js工作流程,他最终可能不是通过取域值来提交的,我看像是通过文本框鼠标事件来触发js函数,接着让你来选择城市,这步下去可能是将选择结果存入js变量,最后将变量交给域来提交,那个文本框填什么可能根本没鸟用,只是让使用者看看城市名字而已,因为航班往来城市是固定的,不是说你想填什么就填什么,你自己想想是不是呢?你填个天堂或地狱,你说会是什么结果? 如果你研究了他的js流程发现确实是这样的,那么你该做的是通过向webbrowser注入一段用于赋值的js代码并执行,然后就可直接提交,文本框都可以不用管。
哋岼線 2015-10-09
  • 打赏
  • 举报
回复
1. 你给 textbox 赋值是在什么时候? 2. 你发现值是写进去了,是如何发现的?是在什么时候发现的?
  • 打赏
  • 举报
回复
加QQ吧,那样快一下,67820960 另外分给我吧,我没分了,问不了问题
  • 打赏
  • 举报
回复
我在浏览器挨了F12,没这个东西的源码,不过你可以找你们公司会网页的人找找元素,有元素就能控制了 我正在也在写这个东西,一起交流一下吧
cz49009 2015-10-09
  • 打赏
  • 举报
回复
哎,也是无奈,经理让我继续找它请求的地址和参数,一点一点看,看了好半天,愣是没找到。数据采集这东西也是最近才开始学习的,经理一句让我自己研究,就只能自己网上找资料摸索着学,所以有些东西还是只是一知半解的。
cz49009 2015-10-09
  • 打赏
  • 举报
回复
引用 7 楼 luguangbiao 的回复:
我向问问,你在输入文字到点击确定,中间是怎么做延迟的
目前我只做输入值的,点确定按钮的还没做,现在连输入值都无法做到。。。。
  • 打赏
  • 举报
回复
我向问问,你在输入文字到点击确定,中间是怎么做延迟的
ajianchina 2015-10-09
  • 打赏
  • 举报
回复
你尝试触发一下选择城市的那个下拉js事件,哪怕你不选,先找到这个js事件,触发一下后在赋值。
feiyun0112 2015-10-09
  • 打赏
  • 举报
回复
webBrowser1.Document.GetElementById("orgCity").Value ="北京"
cz49009 2015-10-09
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
是不是你没等js执行完毕就赋值了?
我百度了好多等页面完全加载完的方法,结果都是一样。其实主要是想采集到这个网站的机票价格信息,但是没有找到请求的url和参数是什么。所以才出此下策,模拟人员输入查询的
  • 打赏
  • 举报
回复
是不是你没等js执行完毕就赋值了?
cz49009 2015-10-09
  • 打赏
  • 举报
回复
都过了半个小时了。。。。。。。。。

111,098

社区成员

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

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

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