标题:请高手帮忙解决VFP 使用webbrower 自动填表并提交的问题
取消只看楼主
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
结帖率:54.17%
已结贴  问题点数:20 回复次数:9 
请高手帮忙解决VFP 使用webbrower 自动填表并提交的问题
刚学习用VFp webbrower 控件编程,以下是一段JSP代码:

<form action="change_w2.jsp?i=22024738&amp;tkn=LAcGKVGSIaQy7SDZP8I4-NwYwoCyTZr4iW:1loaHMXu3Y" method="post">
洗练石:<input name="count" size="15" type="text"/>
<input type="submit" value="确定" />
</form>

我的想法是:为的文本框赋值,并提交按钮。
我是这样做的:
文本框赋值:thisform.web1.document.all("count").SetAttribute("value","2")   *这句没有问题行运行,赋值2给文本框
提交按钮:我试图通过 thisform.web1.document.all(i).type 查找到类型为submit的数组为11,然后用以下方法提交:
  用thisform.web1.document.all(11).click()    *不行,死机
  用thisform.web1.document.all(11).InvokeMember("click")  *提示未的错误

提交按钮不知道如何写了,请高手帮忙解决一下

[此贴子已经被作者于2021-8-19 11:40编辑过]

搜索更多相关主题的帖子: document type thisform 提交 VFP 
2021-08-19 11:32
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
回复 3楼 吹水佬
谢谢吹水佬!这段代码能行。不知道,新建的这个对象在其它电脑上是否需要进行额外的控件注册。
另外,如果采用html_DOM方式代码运行就更好了。
2021-08-20 10:48
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
回复 7楼 吹水佬
吹水佬高手啊
各种方法都能实现啊
最终,既然html dom方式不行,我还是选择Createobject("MSXML2.XMLHTTP")这个方法吧

我还是比较疑惑,明明通过调试器可以访问dom内的对象,如item,一编译后,就不能识别了。
是不是VFP真的老了?

2021-08-23 21:22
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
真搞不懂下面这句为第一个表单的第一个元素赋值为200

thiform.web1.document.getElementsByTagName("form").[0].item(0).setAttribute('value',200)

我在该语句前 SUSPEND 调试器跳出,我在监视窗口中运行这句,没有问题,正确运行,值为200。但是,我取消 SUSPEND 后运行,却提示未知名的错误,点击“挂起”,在调试器的监视窗口中运行该句,又变正确了。

我感觉头晕了,这是怎么回事啊?
2021-08-24 09:34
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
fown,你提供的这个代码:
INKEY(2)
thisform.wb.Document.getElementsByTagName("input").item(0).value="200"
能用。

但不知道 INKEY(2) 这句在这里起到什么作用?查手册 INKEY(2) 意思是等待2秒钟键盘输入。

删除 INKEY(2) 这句后,就提示 item 不是对象,出错,不能正确运行。
2021-08-24 12:30
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
我猜想应该是该页面还没有完全加载,是dom不能正常运行的原因。
2021-08-24 16:52
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
估计是网页加载的问题,使用 inkey 就解决了访问对象的问题。现在还是提交的问题没有解决

thisform.web1.Document.getElementsByTagName("input").item(1).Click()     *使用按钮的 click 事件
thisform.web1.Document.getElementsByTagName("form").[0].submit           *使用表单的 submit 方法
   或thisform.web1.Document.getElementsByTagName("form").item(0).submit
thisform.web1.Document.forms(0).submit()                                 *使用表单的 submit 方法

以上三个语句理论上都能提交按钮,不知道为什么不能提交成功?

如果真不行,只能用XMLHTTP实现了

[此贴子已经被作者于2021-8-24 18:47编辑过]

2021-08-24 18:43
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
最后,终于发现提交按钮不成功的问题所在,应该是 form 的 action 地址不完整,所以可以针对这个问题进行处理了。
感谢各位vfper。
VFP不过时,过时的是人啊!
2021-08-24 23:50
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
收藏中
2021-08-25 20:01
yangmz
Rank: 2
等 级:论坛游民
帖 子:94
专家分:20
注 册:2013-4-2
得分:0 
我的操作系统是win10自带的microsoft edge

看来还得搞一个判断IE版本的代码了
MESSAGEBOX(thisform.wb.Document.getElementsByTagName("input").item(1).VALUE)  显示的是“确定”

thisform.wb.Document.getElementsByTagName("input").item(1).click   *以可运行,但提示找不到正确的网页地址,可能是因为地址不完整的原因,有了方向,我再研究一下应该没有问题
经过这一番的讨论,我学到了很多,谢谢。



[此贴子已经被作者于2021-8-26 21:11编辑过]

2021-08-26 20:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506577-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.160955 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved