0

我正在使用 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 窗口中捕获的按钮单击事件

在此处输入图像描述

我想知道的是,有没有一种方法可以指定控件名称(即“搜索”或“imagebuttonSa”),所以 TestComplete 将在给定的 GUI 中搜索名称,然后一旦找到,就进行点击事件关于这个词

我使用 Windows 7 64 位操作系统、TestComplete 9 试用版和 VBScript 作为脚本语言。

4

4 回答 4

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","");
}
于 2013-06-19T09:46:26.273 回答
1

如果您不指定坐标,它将单击对象的中心。

于 2013-06-19T21:18:51.063 回答
1

据我所见, TestComplete 已经在您的情况下适用于特定的控件/对象:textboxQimagebuttonSa这两个名称由名称映射功能赋予对象,您可以随意更改它们。

至于坐标,这些坐标与对应控件的左上角相关(textboxQimagebuttonSa)。如果需要,您可以从动作参数中删除坐标(例如 .. .imagebuttonSa.Click()),TestComplete 将单击控件的中心点。

如果您在回放测试时遇到任何问题并且无法找出这些问题的原因,您最好的选择是联系SmartBear 支持团队,详细解释发生的情况。将带有失败结果日志的项目发送给他们。

于 2013-04-26T11:15:31.380 回答
0

您可以尝试使用按钮所在的对象名称映射执行 FindChild 或 Find,使用属性(例如:ObjectType 作为按钮和按钮标题以及所需的按钮标题),一旦 FindChild 找到具有上述指定属性的按钮,您可以使用它点击它的对象:

var button = ParentObj.FindChild(["ObjectType","Caption"],["Button","OK"],10); if(button.Exists) button.Click()

于 2013-06-05T09:17:04.050 回答