请选择 进入手机版 | 继续访问电脑版
切换风格

Sunset glow Snow NewYear London Flowers Wizard California Cloud Sky Lavender City Black Beige Dragon
12下一页
自动化测试 - 文件上传之Win32API - Ruby版[复制链接]
发表于 2020-6-30 18:09:45 | 显示全部楼层 |阅读模式
标签:sna mage end 我们 ext image
如果开发使用的不是input ( type = file), 那么需要使用Win32API来操作。
首先引用Win32API
  require "Win32API"

然后
  include Win32

  FindWindow = Win32API.new ‘user32.dll‘, ‘FindWindow‘, %w(P P), ‘L‘
  New查找窗口的Function - FindWindow
  --Win32API.new:使用Ruby自带的Win32API库来初始化Windows的Win32API
  ----参数一:‘user32.dll‘ - FindWindow定义在操作系统的动态链接库user32.dll中
  ----参数二:‘FindWindow‘ - 我们需要使用的Win32API,这里的FindWindow的作用是查找Windows的弹出窗口,返回窗口的句柄。句柄可以理解为指针的指针。
  ----参数三:%w(L P) - 传递给FindWindow的参数列表,%w(L P)表示用两个参数,第一个参数类型为L,即int类型;第一个参数类型为P,即string类型。
  ----参数四:‘L‘ - 返回值类型

  FindWindowEx = Win32API.new ‘user32.dll‘, ‘FindWindowEx‘, %w(L L P P), ‘L‘
  查找FindWindow返回的窗体中的子窗体或子控件
  ----参数三:%w(L L P P)

  SendMessage = Win32API.new ‘user32.dll‘, ‘SendMessage‘, %w(L L L P), ‘L‘
  给窗体或者控件发送消息(赋值)

20200626224045183889.png
以上面的窗口为例
首先使用FindWindow查找弹出的上传文件的对话窗口,返回对话框的句柄
   hParent = FindWindow.call(0,"Open")
   第一个参数是窗口的ClassName,第二个参数是窗口的Name。这里我们只需要给任何一个参数赋值就行,如上面的(0,"Open"),Open是窗口的名称。

然后使用FindWindowEx定位对话框中的文件名输入框。输入框和下拉框,对话框的层级(父子)关系如下:
20200626224045183889.png
  即:Dialog --> ComboBoxEx32 --> ComboBox --> Edit, 可知输入框是嵌套在下拉框中。所以我们需要一级一级定位:
hCombo = FindWindowEx.call(hParent, 0, "ComboBoxEx32", "")
hCombo_child = FindWindowEx.call(hCombo, 0, "ComboBox", "")
hEdit = FindWindowEx.call(hCombo_child, 0, "Edit", "")
FindWindowEx的第一个参数是Parent Control的句柄,第三个参数是我们要找的Child Control的类型。

到这里我们已经定位到了File Name的输入框,接下来我们给他赋值
wm_settext = 0x000c


SendMessage.call(hEdit, wm_settext, 0, "C:test.pdf")

最后,找到Open按钮并Click
bm_click = 0x00f5
open_button = FindWindowEx.call(hParent, 0, "Button", "&Open")
SendMessage.call(open_button, bm_click, 0, "")

完成!  



自动化测试 - 文件上传之Win32API - Ruby版
标签:sna mage end 我们 ext image
回复

使用道具 举报

189

主题

1314

帖子

2817

积分

金牌会员

Rank: 6Rank: 6

积分
2817

论坛新星

发表于 2020-6-30 18:22:42 | 显示全部楼层
珍爱生命,果断回帖。
回复

使用道具 举报

发表于 2020-7-6 18:59:34 | 显示全部楼层
围观 围观 沙发在哪里!!!
回复

使用道具 举报

发表于 2020-7-7 15:39:16 | 显示全部楼层
very good
回复

使用道具 举报

188

主题

1305

帖子

2798

积分

金牌会员

Rank: 6Rank: 6

积分
2798

论坛新星

发表于 2020-7-7 16:52:28 | 显示全部楼层
赞一个
回复

使用道具 举报

发表于 2020-7-10 21:04:52 | 显示全部楼层
路过 帮顶 嘿嘿
回复

使用道具 举报

发表于 2020-7-10 21:45:48 | 显示全部楼层
回复

使用道具 举报

发表于 2020-7-10 21:55:09 | 显示全部楼层
嘘,低调。
回复

使用道具 举报

发表于 2020-7-11 11:50:44 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

173

主题

1324

帖子

2821

积分

金牌会员

Rank: 6Rank: 6

积分
2821

论坛新星

发表于 2020-7-11 17:37:42 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

点击右侧快捷回复 【吾爱分享www.52fenxiang.top】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享-享你所想 ( 黔ICP备18007665号-2 )|网站地图

GMT+8, 2020-8-5 16:15 , Processed in 0.113448 second(s), 65 queries .

Powered by 52Fenxiang.Top

© 2001-2020 Comsenz Inc.

返回顶部