【已解决】cs应用,窗口识别的问题
本帖最后由 wangll 于 2013-4-25 11:37 编辑cs应用,窗口识别的问题:打开窗口A,对应text="测试应用",选择一个项目后,在A窗口会显示所选项目的所有信息,而A窗口的text="测试应用-项目名称XXX",我现在要判断打开项目是否成功,但窗口A对象总是识别不到,用了描述性编程+正则表达式如If WpfWindow("text:=测试应用-.").exist为何不行呢? 自己模拟了一个简单的应用,点击button后,form的text值随机变化,我只是想在点button后只要知道form的text值变化了就证明button操作成功,如何实现呢? 本帖最后由 黑羽祭 于 2013-4-25 09:29 编辑
回复 2# wangll
这样:Dim oBefore,oAfter
oBefore = Window("text:=点击前.*").GetROProperty("text")
Window("text:=点击前.*").WinObject("text:=button1").Click
oAfter =Window("text:=点击前.*").GetROProperty("text")
If oBefore <> oAfter Then
msgbox "操作成功"
Else
msgbox "未操作成功"
End If 回复 2# wangll
你正则应该写:Window("text:=测试应用-.*") 子曰,学而时习之 回复 4# 黑羽祭
自己模拟的那个小例子这种方式是识别的,我。。。而本身测试的应用还是不行:L 回复 6# wangll
.后面加*还是不行?有没有报错?上截图看,最好再发一下脚本
信息多了才能定位问题 加*还是不行:
If WpfWindow("打开项目").Exist(3) Then
Randomize
'获取列表的总行数
rows = WpfWindow("打开项目").WpfTable("WpfTable").RowCount
seIRow = Cint(int(rows* Rnd))'Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
'该行对应的项目名称
projectName = WpfWindow("打开项目").WpfTable("WpfTable").GetCellData(seIRow,0)
WpfWindow("打开项目").WpfTable("WpfTable").SelectRow seIRow
WpfWindow("打开项目").WpfButton("确定").Click
wait 3
oAfter = WpfWindow("text:=测试数据自动判读 -.*").GetROProperty("text")
msgbox oAfter
If WpfWindow("text:=测试数据自动判读 -.*").Exist Then
parameter("resultValue_script")="Yes"
else
parameter("resultValue_script")="NO"
End If
End If If WpfWindow("text:=测试数据自动判读 -.*").Exist Then 这一句是直接跳到else语句了
所以又按照你的示例用了oAfter = WpfWindow("text:=测试数据自动判读 -.*").GetROProperty("text"),看看是否能获取到text值,可这时候报可怎么会匹配了多个对象呢? 回复 9# wangll
说明能找到多个这样的框,所以对WpfWindow("text:=测试数据自动判读 -.*")的描述要再增加一些属性。 回复 7# 黑羽祭
1、 或者我把之前的对象库全都删除,全都改为描述性编程试试?
2、还有个问题,打开项目前的窗体A,包含了很多控件,如button,
winfrom("测试应用").winbutton("打开项目").click
打开项目后的窗体A只是文本变了,而button还在,又加了一些其他的控件,那么在识别这些button的时候,再写成这样winfrom("测试应用").winbutton("打开项目").click 肯定是识别不了了,因为winform的text变化了,那又该怎么解决这个问题呢? 回复 11# wangll
1. 为什么要吧对象库全删了?那样效率多低,结合使用不是更好嘛。
2. 可以用对象库啊,记录2个按钮就行了,描述性编程也行,描述其他属性就行了,别用text属性也能用同一个条件点上,不过不怎么推荐。
合理的使用对象库,这些问题都能解决,对象库也支持正则的,没必要都改成描述性编程 回复 12# 黑羽祭
好的,我再看一下为何匹配了多个对象啊 回复 13# wangll
你可以加个index属性上去,0-n逐个highlight,就能很快知道为什么了。 回复 12# 黑羽祭
1、:lol太帅了,按你说的加了个devname属性,可以识别了,但其实还是有些不明白的,就是我觉得就这一个窗口啊怎么会匹配了多个呢,不过终究解决了问题,呵呵
2、打开项目后的窗口识别使用了描述性编程,那么后边的所有基于这个窗口的操作是不是都要描述性编程了呢? 回复 15# wangll
1. 很正常,再说你用了正则,出现了2个一样的控件很可能。你可以添加控件到对象库,然后看看对象库是怎么对这个控件进行描述的,照着学学。
2. 对的,那层以下都强制使用描述性编程。
页:
[1]