fanfan 发表于 2004-9-7 17:24:43

請問Robot 如何快速使用座標定位

各位大大您好,小弟我最近在學習上發現Robot 在當網頁使用Input Type="File" 為上載檔案的按鈕時,錄製後無法正常執行回放的動作,也就是說無法正確執行Click的動作,
其中Scritp 為
PushButton Click, "Type=PushButton;Index=1"

於是我想利用HTML Click, "", "Coords=340,213"
的方式進行座標定位點選,可以解決無法正確點選的問題,但是在取決座標上卻經常無法正確定位,而感到挫折.....

請問各位大大,有誰可以教導小弟我遇到的問題,由衷感激!!! 謝謝!!

pcl2004_27 发表于 2004-9-8 09:23:23

使用坐标定位,每次需要注意的是坐标的变化,这样为了保证每次脚本回访成功,我们要注意每次让他们的测试状态一样(和录制脚本时候一样!)
比如你的软件(ie)为最大化状态,那么你每次回放脚本肯定是一样的坐标

第一个脚本
PushButton Click, "Type=PushButton;Index=1"
解决方法:查看包含着个pushbutton的这个页面是否动态生成的,也就是这个index是否每次都是1。
   或者替换掉index为其他标示比如text=xxxx

第二个问题
   应该考虑窗体状态(页面位置)
还有web测试中要考虑其中的有层次的概念,所以要用“/“把层次表示出来

如:HTML Click, "xxxx/xxxx/pushbutton", "Coords=340,213"

fanfan 发表于 2004-9-8 10:36:52

座標定位使用方式

謝謝協助,在第一個腳本中,我這裡的index每次都是1 ,但PushButton 的執行,每次點選都只顯示在瀏覽按鈕旁邊的欄位內(可看出直線一閃一閃的等待輸入符號),並不會執行點選瀏覽鈕所應該跳出的上載檔案選擇對話視窗...
你說的其他标示比如text=xxxx ,我還是不清楚,因為我在inspector 中看到的如下
- PushButton;Index=1
       HTML Text
    + Properties
在外層和 Properties內層看不到text,如上所述,不知PCL 兄 你會建議如何修改,在PushButton 的 recMethod$ 中遇到我這個情況,您會如何選擇ㄋ ?

第二個問題我在這裡所謂的層次 "xxxx/xxxx/pushbutton" 看不懂,可以舉例說明ㄇ,真不好意思,腦筋打結中....還望PCL 撥空指導,謝謝!!

pcl2004_27 发表于 2004-9-16 10:51:55

我建立一个网页来模拟你的实际应用!来说明问题

HTML代码如下

框架代码
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>新建网页 2</title>
</head>

<frameset rows="64,*">
<frame name="header" scrolling="no" noresize target="main" src="hello_world.htm">
<frame name="main" src="new_page_3.htm">
<noframes>
<body>

<p>此网页使用了框架,但您的浏览器不支持框架。</p>

</body>
</noframes>
</frameset>

</html>

hello_world.htm代码
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Hello World</title>
<base target="main">
</head>

<body>

<p>Hello World</p>

</body>

</html>


new_page_3.htm代码
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 3</title>
<SCRIPT FOR="B3" EVENT="onClick" LANGUAGE="VBScript">
    MsgBox "上传文件!"
</SCRIPT>
</head>

<body>
<form method="POST" action="--WEBBOT-SELF--">
<!--webbot bot="SaveResults" u-file="C:\Documents and Settings\Administrator\桌面\test\_private\form_results.csv" s-format="TEXT/CSV" s-label-fields="TRUE" --><p>
<input type="button" value="上传" name="B3">
<input type="submit" value="提交" name="B1">
<input type="reset" value="重置" name="B2"></p>

</form>
</body>
</html>

pcl2004_27 发表于 2004-9-16 10:58:56

这里要说明问题的是内部的上传按钮是在外部的Frame框架下边
这个Frame就是这个按钮的“父“
那么在脚本函数(Robot)中就要用他们的“层“次-父子关系来定位这个上传按钮的位置!这也就是有的时候大家在网页编程开发脚本的时候遇到的1003错误,找不到对象!就是因为这个原因,定位不到你要找道的对象

pcl2004_27 发表于 2004-9-16 11:39:23

这个Frame是,其实就是HTMLFrame类型,那么上边的定位问题就要在他们中间(表示层的关系)使用【;\;】把识别字符串格开。
SQABasic Sample中的说明是:
This example clicks the check box with a Value attribute of 2. The check box is located within the Web page frame named Main.

CheckBoxClick, "Type=HTMLFrame;HTMLId=Main;\;Type=CheckBox;HTMLText=2"

为了解决上边定位的问题,写了下边的代码
Sub Main()
dim result as integer
Dim status as Integer

Dim StateString As String
StartBrowser "C:\Documents and Settings\Administrator\桌面\test\index.htm", "WindowTag=WEBBrowser"

Result = SQAGetProperty("HTMLDocumnet,HTMLTitle=新建网页2;\;HTMLFrame,Name=main;\;HTMLDocumnet,HTMLTitle=新建网页3;\;Type=PushButton;Name=B3", "Value", StateString)
stop
sqaconsolewrite "获取结果" & Result
sqaconsolewrite StateString
End Sub
(上边的例子我没有经过调试)其中的\你可以看到他的父子关系!

pcl2004_27 发表于 2004-9-16 11:42:49

在外層和 Properties內層看不到text,如上所述,不知PCL 兄 你會建議如何修改,在PushButton 的 recMethod$ 中遇到我這個情況,您會如何選擇ㄋ ?
这个问题用上边的同样的方法,你可以试验一下!

司空公子 发表于 2004-9-19 11:25:52

经过实验,发现SQAGetProperty这句有点问题,现贴出我的结果如下:

Result = SQAGetProperty("Caption=新建网页 2 - Microsoft Internet Explorer;\;Type=HTMLFrame;HTMLId=main;HTMLTitle=新建网页 3;\;Type=PushButton;Name=B3", "Value", StateString)

需要注意HTMLId=main和HTMLTitle=新建网页 3是属于一层的。

有时候回复只是提供了个思路,需要通过实验验证。所以希望大家多动脑筋,多动手。

fanfan 发表于 2005-1-22 00:19:54

感謝司空公子以及PCL2004_27指導與分享!!!

去年工作比較忙已經把自動化時間分散開了,最近又將思路跑過一遍,驗證上述不解之處,承蒙兩位大大的提醒與指導,豁然開朗....謝謝!!!
驗證結果如下:
Result = SQAGetProperty("Type=HTMLFrame;HTMLId=main;\;Type=PushButton;Name=B3","Value",StateString)

就可以正常取得值 。得証~~父子階層的對應關係~~

闪灵 发表于 2005-12-20 11:14:53

为什么我录制PCL的网页没有你们说的层次问题?可以正常回放?
脚本如下:

Sub Main
    Dim Result As Integer

    'Initially Recorded: 2005-12-2011:03:59
    'Script Name: tt
   
    Window SetContext, "Caption=Inspector Document - Inspector", ""
    Window WMinimize, "", ""
    StartBrowser "C:\Documents and Settings\LiuJie\桌面\try.htm", "WindowTag=WEBBrowser"
   
    Window SetContext, "WindowTag=WEBBrowser", ""
    PushButton Right_Click, "Text=为帮助保护您的安全,Internet Explorer 已经限制此文件显示可能访问您的计"
    PopupMenuSelect "允许阻止的内容(A)..."
   
    Window SetContext, "Caption=安全警告", ""
    PushButton Click, "Text=是(Y)"
   
    Window SetContext, "WindowTag=WEBBrowser", ""
    GenericObject Click, "Class=Internet Explorer_Server;ClassIndex=1", "Coords=30,99"
   
    Window SetContext, "Caption=VBScript", ""
    PushButton Click, "Text=确定"

End Sub

bjballoonfish 发表于 2007-4-23 14:30:11

强悍~!

tt2008 发表于 2008-8-1 23:56:33

hao

bczy_77 发表于 2010-7-19 13:23:22

站个座
页: [1]
查看完整版本: 請問Robot 如何快速使用座標定位