我正在使用TestComplete来实现QA流程的自动化。
TestComplete会根据屏幕上鼠标的位置检测点击事件。但是当我在另一台机器(更大/更小的屏幕)上运行相同的测试时,鼠标按钮不会点击正确的位置。
因此我想知道是否有一种方法可以根据其名称(即按钮的名称)搜索控件,然后运行脚本来点击该特定的单词(或位置)。
感谢任何帮助:)
其他详细信息
这是TestComplete为点击网页上的搜索按钮而生成的示例脚本。
Sub Test6()
'Opens the specified URL in a running instance of the specified browser.
Call Browsers.Item(btIExplorer).Navigate("http://www.simplyrecipes.com/search/?cx=003084314295129404805%3Ai2-mkfc4cai&cof=FORID%3A11&q=&sa.x=48&sa.y=16")
'Clicks at point (173, 10) of the 'textboxQ' object.
Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.textboxQ.Click(173, 10)
'Sets the text 'asd' in the 'textboxQ' text editor.
Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.textboxQ.SetText("asd")
'Clicks at point (57, 12) of the 'imagebuttonSa' object.
Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.imagebuttonSa.Click(57, 12)
End Sub
以下是在RecordTest窗口中捕获的按钮单击事件
我想知道的是,有没有办法可以指定控件名称(即'Search'或'imagebuttonSa'),因此TestComplete将在给定的GUI中搜索名称然后一旦它找到后,点击上的点击事件。
我使用的是Windows 7 64位操作系统,TestComplete 9试用版和VBScript作为脚本语言。
答案 0 :(得分:1)
据我所知,TestComplete已经适用于特定控件/对象的情况: textboxQ 和 imagebuttonSa 。这两个名称通过Name Mapping功能提供给对象,您可以随意更改它们。
对于坐标,这些坐标与相应控件的左上角相关( textboxQ 或 imagebuttonSa )。如果需要,可以从动作参数中删除坐标(例如.. .imagebuttonSa.Click()),TestComplete将单击控件的中心点。
如果您在回放测试时遇到任何问题而无法找出导致这些问题的原因,那么最好的选择是contacting SmartBear支持团队,详细说明会发生什么。向他们发送包含失败结果日志的项目。
答案 1 :(得分:1)
Whenever I have a problem with not finding an object with TC I use one of this functions or a combination of them.
In case you have the table object (parent of the cell you want to click):
function clickCellByText(text,tablePath)
{
var table = tablePath;
if (!table.Exists)
{
Log.Error("A table with the following text cannot be found: " + table);
}
clickCell1(table, "*Cell*", "*Cell*");
function clickCell1(table, idText, linkText)
{
var propArray = new Array("innerText", "ObjectType");
var valArray = new Array(text,"Cell*");
var idCell = table.FindChild(propArray, valArray, 20000);
if (idCell.Exists)
{
// Row found, find the link in the same row
idCell.Click();
}
else
{
Log.Error("A cell with the following text cannot be found: " + text);
}
}
}
If you want to find the object or the parent of the object by any property:
function clickComponent(property,text)
{
// Using the Find method
var myObj = Sys.Browser("iexplore").Page("*").NativeWebObject.Find(property,text);
// Checks if the button exists
if (myObj.Exists)
{
myObj.Click();
}
else
Log.Error("Can't find the object","");
}
答案 2 :(得分:1)
如果未指定坐标,则会单击对象的中心。
答案 3 :(得分:0)
一旦FindChild找到具有上述指定属性的按钮,您可以尝试使用按钮所在的FindChild或Find with Object Name Mapping,使用属性(例如:ObjectType为按钮和按钮标题以及所需的按钮标题)可以使用该对象点击它:
var button = ParentObj.FindChild(["ObjectType","Caption"],["Button","OK"],10);
if(button.Exists)
button.Click()