vb怎样操作控制“打开对话框”选择文件

无·法 2013-04-23 01:44:16
有个自动化测试需求需要给“打开对话框”自动选择文件。 不知道有什么方法。

打算用这样的方法来操作的:
1)查找窗口,得到句柄
2)然后得到“文件名:”后面框框的句柄进行赋值

不过第二步始终操作失败。现在用的方法是:
1)查找窗口,得到句柄
2)激活窗口保持“打开对话框”为活动窗口
3)设置文件名那边的输入框为焦点
4)用sendkeys发送文件全路径,然后发送回车键

这样虽然可以操作,但不稳定,有一定的操作失败的几率。

参考图片:


ps:图片中的记事本只是打个比方,可能有人会给出“notepad xxx文件名”的方法。
...全文
1190 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
me4405801 2013-06-20
  • 打赏
  • 举报
回复
引用 11 楼 sysdzw 的回复:
谢谢。 主要是里面有些函数涉及回调,所以没法都放到类里面。以后有时间可以考虑可行性。
关于单类模块实现回调函数,你可以参考这个:http://www.cnblogs.com/pctgl/articles/1797692.html
无·法 2013-06-19
  • 打赏
  • 举报
回复
引用 10 楼 me4405801 的回复:
[quote=引用 3 楼 sysdzw 的回复:] 少了个声明。
Public window As New clsWindow
提个小建议,那个clswindow类API声明最好不要放在公用模块中,最好把所有API声明为私有形式,放在类模块中。 以避免用户声明相关API时出现重复声明。[/quote]谢谢。 主要是里面有些函数涉及回调,所以没法都放到类里面。以后有时间可以考虑可行性。
me4405801 2013-06-19
  • 打赏
  • 举报
回复
引用 3 楼 sysdzw 的回复:
少了个声明。
Public window As New clsWindow
提个小建议,那个clswindow类API声明最好不要放在公用模块中,最好把所有API声明为私有形式,放在类模块中。 以避免用户声明相关API时出现重复声明。
worldy 2013-06-19
  • 打赏
  • 举报
回复
结案吧,每人多分点
无·法 2013-06-19
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
clswindow是什么对象?
http://bbs.csdn.net/topics/390488924 谁再回几个帖子,当做散分贴了
venyblue 2013-04-27
  • 打赏
  • 举报
回复
请高手帮忙修正一个注册表模块!已经做成工程文件,有详细的实例的! http://bbs.csdn.net/topics/390428796
threenewbee 2013-04-26
  • 打赏
  • 举报
回复
http://www.cnblogs.com/yufun/archive/2009/10/10/1580132.html
worldy 2013-04-25
  • 打赏
  • 举报
回复
clswindow是什么对象?
酷心 2013-04-23
  • 打赏
  • 举报
回复
路过接分!
无·法 2013-04-23
  • 打赏
  • 举报
回复
少了个声明。
Public window As New clsWindow
6742 2013-04-23
  • 打赏
  • 举报
回复
可以用控件,也可以用API
无·法 2013-04-23
  • 打赏
  • 举报
回复
研究了一阵子解决了,用了一个自己很久以前写的类。 此贴当福利散分贴了。
Dim l&
l = window.getWindowHwndByTitle("打开")
Text1.Text = "打开对话框句柄为:" & l
window.setElementTextByClassName "Edit", "C:\p3.sh"
window.ClickElementByText "打开\(&O\)"

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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